1豆茫、安裝Python2.7
之所以是2.7而不是3.x舱沧,因?yàn)榇蠖鄶?shù)庫只支持2.x,裝3.x簡直就是作死立倍。Windows安裝包最后有個(gè)選項(xiàng)問你是否設(shè)置運(yùn)行環(huán)境灭红,勾上,省略修改Path這一步口注。
2变擒、安裝easy_install
在這里找到ez_setup.py腳本,下載到本地寝志,雙擊運(yùn)行娇斑,一個(gè)DOS窗口閃了一下就裝好了。
3材部、安裝pip
開個(gè)DOS
easy_install pip
4毫缆、安裝virtualenv
pip install virtualenv
5、新建一個(gè)目錄乐导,并在里邊創(chuàng)建virtualenv環(huán)境苦丁,在DOS下
$ mkdir myproject
$ cd myproject
$ virtualenv venv
這時(shí)你創(chuàng)建的myproject文件夾里面就多了一個(gè)venv文件夾
6、激活虛擬環(huán)境
$ venv\scripts\activate
現(xiàn)在命令行前面多了個(gè)(venv)表示你在venv環(huán)境內(nèi)
7物臂、在virtualenv里安裝Flask
pip install Flask
收工
另:據(jù)說安裝virtualenv會(huì)自動(dòng)安裝pip旺拉,所以第3、4步可以合并為:
easy_install virtualenv
?參考資料:
funcscrollAtEdge(){//計(jì)算拖動(dòng)視圖里邊緣的距離棵磷,正比于滾動(dòng)速度蛾狗,并且判斷是往上還是往下滾動(dòng)letpinTop = dragView.frame.origin.yletpinBottom =self.frame.height - (dragView.frame.origin.y + dragView.frame.height)varspeed:CGFloat=0varisTop:Bool=trueifpinTop <0{? ? ? ? ? ? speed = -pinTop? ? ? ? ? ? isTop =true}elseifpinBottom <0{? ? ? ? ? ? speed = -pinBottom? ? ? ? ? ? isTop =false}else{self.timer?.invalidate()self.timer =nilreturn}ifletoriginTimer =self.timer,originSpeed = (originTimer.userInfoas? [String:AnyObject])?["speed"]as?CGFloat{//計(jì)算滾動(dòng)速度和原來相差是否過大,目的是防止頻繁的創(chuàng)建定時(shí)器而使?jié)L動(dòng)卡頓ifabs(speed - originSpeed) >10{? ? ? ? ? ? ? ? originTimer.invalidate()NSLog("speed:\(speed)")// 60fps仪媒,滾動(dòng)才能流暢lettimer =NSTimer(timeInterval:1/60.0, target:self, selector: #selector(SortableCollectionView.autoScroll(_:)), userInfo: ["top":isTop,"speed": speed] , repeats:true)self.timer = timerNSRunLoop.mainRunLoop().addTimer(timer, forMode:NSRunLoopCommonModes)? ? ? ? ? ? }? ? ? ? }else{lettimer =NSTimer(timeInterval:1/60.0, target:self, selector: #selector(SortableCollectionView.autoScroll(_:)), userInfo: ["top":isTop,"speed": speed] , repeats:true)self.timer = timerNSRunLoop.mainRunLoop().addTimer(timer, forMode:NSRunLoopCommonModes)? ? ? ? }? ? }funcautoScroll(timer:NSTimer){ifletuserInfo = timer.userInfoas? [String:AnyObject] {iflettop =? userInfo["top"]as?Bool,speed = userInfo["speed"]as?CGFloat{//計(jì)算滾動(dòng)位置沉桌,更新contentOffsetletoffset = speed /5letcontentOffset =self.contentOffsetiftop {self.contentOffset.y -= offsetself.contentOffset.y =self.contentOffset.y <0?0:self.contentOffset.y? ? ? ? ? ? ? ? }else{self.contentOffset.y += offsetself.contentOffset.y =self.contentOffset.y >self.contentSize.height -self.frame.height ?self.contentSize.height -self.frame.height? :self.contentOffset.y? ? ? ? ? ? ? ? }letpoint =CGPoint(x: dragView.center.x, y: dragView.center.y + contentOffset.y)//滾動(dòng)過程中,拖拽視圖位置不變,因此手勢識(shí)別代理不會(huì)調(diào)用留凭,需要手動(dòng)調(diào)用移動(dòng)itemself.moveItemToPoint(point)? ? ? ? ? ? }? ? ? ? }? ? }