回顧:
繪圖兩點:
1. 繪圖**寫在哪?
a. 繼承自uiview後重寫drawrect
b. 在控制器中,**寫在uigraphicsbeginimage...和endimage之間
2. 繪圖**能寫幾種風格?
a. 使用uikit中uicolor nsstring uiimage uibezierpath中封裝完的常用繪圖方法
b. 使用底層的core graphics c函式
3. 如何重繪?
setneeddisplay
今天1. 手勢
1.1 什麼是手勢?
使用者在左觸屏動作時,一些有特定規律的移動軌跡,叫做手勢
1.2 有哪些手勢?
一次性手勢 (方法只執行一次)
tap 點 按
swipe 輕掃
連續性手勢 (方法會執行多次)
longpress 長按
pan 拖動
pinch 捏合 外擴
rotation 旋轉
1.3 手勢的本質
將使用者針對裝置螢幕的物理性動作,轉換成計算機能夠處理的資料,也就是說把動作轉換成了乙個資料存起來,所以,在機器內,手勢最總都是程式中得乙個物件,對手勢的處理,就是分析這個物件中儲存的資料,掌控使用者的動作,再來響應
1.4 如何使用手勢?
所有手勢都從 uigesturerecognize 派生而來
系統提供的手勢有如下:
uitapgesturerecognizer
uiswipegesturerecognizer
uilongpressgesutrerecognizer
uipangesturerecognizer
uipinchgesturerecognizer
uirotationgesturerecognizer
1.5 如何使用手勢
step 1:建立手勢物件
step 2:設定手勢的常用屬性
step 3:將手勢與具體的檢視繫結在一起(只有在繫結的檢視上,做該手勢時,系統才會做出響應)
1.6 uitapgesturerecognizer
一次性手勢:點 按
常用設定屬性
// 設定需要的點按次數
tapgr.numberoftabsrequired = 2;
// 設定需要的觸點個數
tapgr.numberoftouchesrequired = 1;
1.7 uiswipegesturerecognizer
一次性手勢:輕掃
重要屬性:方向 direction
注意:設定支援的方向時,不能同時把四個方向都或到一起,也不能將上下或左右同時設定,因為無法界定使用者的有一定角度的手勢,是向左右還是上下。
1.8 uilongpressgesturerecognizer
連續性手勢,長按
重要屬性:minimumpressduration
1.9 uipinchgesturerecognizer
連續性手勢:捏合 外擴
重要的可讀寫屬性:
velocity:動作的數獨 向外擴時為正值,向內捏合時為負值
scale:每一次動作發生後,兩個觸點之間的距離相對於動作起始時,兩觸點之間的距離的變化倍數
1.11 uipangesturerecognizer
連續性手勢:拖拽
重要的方法:
locationinview 獲取觸點在某個檢視中得座標點位置
1.12 uirotationgesturerecognizer
連續性手勢:旋轉
重要的屬性:
rotation:獲取旋轉後的位置相對於動作起始點便宜的弧度
2. 變形
2.1 什麼是變形?(transform)
檢視發生了位移 縮放 旋轉這樣的變化時,叫做變形
2.2 如何實現變形
通過修改檢視的transform屬性完成變化的效果
位移:translation
縮放:scale
旋**rotation
2.3 transform 屬性
型別:cgaffinetransform型別的結構體,也稱放射變換
結構體中包含了6個可變的數值和3個定值,組成了3x3的矩陣,只要修改矩陣中6個數值中得某幾個,就可以實現變形。
2.4 修改transform屬性的api
位移變換:
cgaffinetransformmaketranslation()
cgaffinetransformtranslate()
縮放變換:
cgaffinetransformmakescale()
cgaffinetransformscale()
旋轉變換:
cgaffinetransformmakrotation()
cgaffinetransformrotate()
以上方法可以分成兩大組:
帶有make:變換是 基於 「檢視最開始沒有任何變形」 的這個狀態來變形
沒有make:變換是 基於 「傳入的transform的值」 進行變形
重點注意:變形與自動布局(auto layout)是衝突的,所以在使用變形時,要關閉自動布局,否則,產生的效果無法預計
在**關閉自動布局?
隨便選擇乙個 小黃球控制器,在右側的第乙個檢查器中,將auto layout前面的核取方塊 勾掉即可
2.5 熟悉api
2.6 手勢+變形 實現檢視
2.7 如何讓多手勢並存
step 1:設定兩個需要並存的手勢的**為當前控制器
step 2:當前控制器遵守協議
step 3:控制器實現方法
注意:如果手勢新增到了imageviewshang ,要設定的userinteractionenable為yes,也就是需要開啟使用者互動功能
作業:檢視器
1》使用**的方式向view新增乙個uiimageview物件,uiimageview的大小和載入的的大小一致,所以找一張大得(推薦:使用elephant.jpg)
2》使用center屬性將imageview移動到螢幕的中間
3》使用transform屬性將imageview縮放到螢幕剛剛好能顯示下的全部
4》對iamgeview增加rotation手勢,支援的選擇
5》對iamgeview增加pinch手勢,支援的縮放
6》對imageview增加pan手勢,支援的移動
7》對imageview增加tap手勢,雙擊後,恢復到第3步
LinuxC 第十五天
靜態庫 靜態庫 要被包含到源程式中的庫 優點 執行速度快 缺點 占用系統資源比較多 使用的場合 對時間要求很高的場合 靜態庫的製作 1 把所有的源程式 c檔案 製作成目標檔案 o 檔案 gcc c mul.c o mul.o gcc c sub.c o sub.o gcc c add.c o add...
Qt第十五天
qwdialogsize.h ifndef qwdialogsize h define qwdialogsize h include namespace ui class qwdialogsize public qdialog endif qwdialogsize hqwdialogsize.cpp...
python第十五天
什麼是模組?一系列功能的集合 定義模組?建立乙個py檔案就是乙個模組,該py檔名就是模組名 怎麼使用模組?在要是用的模組檔案中通過import 模組名 來匯入模組 模組的四種方式?1 編譯執行模組所對應的py檔案,形成對應的pyc檔案 2 產生該模組自己的全域性命名空間 3 在適應該模組的全域性命名...