計算任意乙個UIView相對螢幕的座標

2021-06-26 01:49:40 字數 871 閱讀 8159

在很多時候,我們需要去計算乙個uiview相對螢幕的座標,來實現一些ui效果。 

在這個uiview未被巢狀多層的時候,相對螢幕的座標很好算,只需要精準的拿到每層superview變數去計算。 

但是很多情況下,我們的uiview可能巢狀了很多層(我在專案中遇到的相對controller.view就有6層之多),並且被巢狀在uiscrollview或者uitableview中,這個時候不可能去拿到每一層巢狀的superview的變數去計算。 

基於這個需求,我寫了乙個通用的方法,可以很方便的拿到任意乙個uiview相對螢幕的座標。 

**雖然很簡單,但是還是蠻實用的。

/**

* 計算乙個view相對於螢幕(去除頂部statusbar的20畫素)的座標

* ios7下uiviewcontroller.view是預設全屏的,要把這20畫素考慮進去

*/+ (cgrect)relativeframeforscreenwithview:(uiview *)v

uiview *view = v;

cgfloat x = .0;

cgfloat y = .0;

while (view.frame.size.width != 320 || view.frame.size.height != screenheight)

}return cgrectmake(x, y, v.frame.size.width, v.frame.size.height);

}

獲取view相對於螢幕的座標。有方法的:

cgrect frame = [view convertrect:view.bounds toview:nil];

UIView停止乙個塊動畫

uiview類的塊動畫類方法都可以比較方便的實現動畫效果 uiview animatewithduration那麼,有人想過怎麼停止塊動畫麼.舉個例子.我們給uiviewcontroller的view新增乙個view然後給他做動畫 uiview view uiview new view.backgr...

漸變效果只能渲染乙個屏,超過乙個屏重新渲染的問題

background linear gradient 404a59,0f1319 css背景色可以設定漸變樣式,但是這個漸變色只能渲染一屏的大小,超出一屏後會再次渲染 比如下圖 上面這個圖是開啟頁面之後剛好是渲染了一屏的漸變色,但是,當把頁面往下拉之後 頁面因為超出一屏之後再次渲染了顏色 解決方法 ...

WPF 元素相對另外乙個元素的 相對位置

原文 wpf 元素相對另外乙個元素的 相對位置 在實際使用wpf後知道它確實很便捷同時布局也很方便,總之處理的都是很不錯特別是資料繫結。跑題了 這裡就簡單放一句獲取相對位置的 獲取element元素相對於本物件 0,0 處的位置 元素 座標public virtual point getpositi...