ios ScrollView縮放的實現原理

2021-08-09 01:46:24 字數 1060 閱讀 6304

我們先看一下uiscrollview的幾個**方法

///返回被縮放的檢視

func viewforzooming(in scrollview: uiscrollview) -> uiview?

///縮放完成之後執行一次,這裡view是被縮放的檢視

func scrollviewdidendzooming(_ scrollview: uiscrollview, with view: uiview?, atscale scale: cgfloat)

//只要縮放就會去呼叫

func scrollviewdidzoom(_ scrollview: uiscrollview)

輸出的結果

由這裡我們知道,我們是縮放乙個檢視,其實就是去改變它的transform,而乙個檢視預設的transform其實就是cgaffinetransformidentity,它的值其實就是[ 1 0 0 1 0 0 ]

transform其實是cgaffinetransform型別的,是乙個結構體

struct cgaffinetransform ;
其中如果修改了檢視的transform如果做的是縮放操作,其實就是在修改這個結構體當中的a和d,如果我們是做平移操作,其實修改的就是tx和ty

如果我們做的是旋轉操作改的就是a,b,c,d。這裡需要注意的是我們修改了檢視的transform是不影響它的bounds的,這就應證了其實frame就是通過bounds 和 transform的疊加以及和center的疊加來進行的。當我們把檢視的tranform變成cgaffinetransformidentity就會返回原圖了。

還有需要注意的是為什麼我們滾動scrollview可以看到超出螢幕的內容。就是因為scrollview不斷改變自己的bounds,從而改變scrollview上的子view的frame,讓他們的frame始終在window的frame內部,這樣我們就可以始終的看到內容了。

iOS scrollView的自動布局

傳送門 xcode6中極大的增強了ib中自動布局的能力,下面就通過對刺兒頭scrollview進行一次自動布局實戰,看看自動布局在xcode6中到底值不值得使用。說 uiscrollview是個刺兒頭,實在沒有誇張,這是由於scrollview本身contentsize contentinsets等...

js設定div縮放 與雙指縮放

function zoomtale 雙指縮放 type var store 縮放事件的處理 document.addeventlistener touchstart function event store.originscale store.scale 1 document.addeventlis...

縮放係數計算

把乙個物品放入到乙個背景框中,背景框可能比物品大,也可能比物品小,那麼就需要進行縮放,才能是物品很好的放入背景框中。縮放係數 local scale itembgsize.width itemimage getcontentsize width itemimage setscale scale 0....