我有一個UIScrollView,其中包含部分繪製在滾動視圖之外的其他子視圖。這些視圖在滾動視圖上方垂直延伸。是否可以只允許子視圖在滾動視圖的頂部之外繪製,並且不允許它們在滾動視圖的左側和右側之外繪製?你可以限制UIView剪輯子視圖到視圖的某一側嗎?
發生了什麼,是因爲當我手動向左和向右滾動時,由於內容大小,子視圖被繪製在滾動視圖之外。一旦子視圖滾動到滾動視圖的框架之外,我想剪輯子視圖。
任何建議或可能嗎?
我有一個UIScrollView,其中包含部分繪製在滾動視圖之外的其他子視圖。這些視圖在滾動視圖上方垂直延伸。是否可以只允許子視圖在滾動視圖的頂部之外繪製,並且不允許它們在滾動視圖的左側和右側之外繪製?你可以限制UIView剪輯子視圖到視圖的某一側嗎?
發生了什麼,是因爲當我手動向左和向右滾動時,由於內容大小,子視圖被繪製在滾動視圖之外。一旦子視圖滾動到滾動視圖的框架之外,我想剪輯子視圖。
任何建議或可能嗎?
你不能指定你想剪輯的單個邊,但是你可以通過將新的UIView
放在你想要剪裁的邊緣(並且有效地剪裁它)旁邊來僞裝。或者,您可以考慮改變視圖層次結構的方式,以便根本不必剪輯子視圖(也許通過以某種方式調整滾動視圖的邊界和佈局)。
我已經設法通過使用layer
的mask
屬性和CALayer來實現此效果。下面的代碼片段剪輯從頂部僅視圖和視圖的左側:
let maskLayer = CALayer()
maskLayer.backgroundColor = UIColor.blackColor().CGColor
maskLayer.frame = CGRectMake(0, 0, 2000, 2000)
aView.layer.mask = maskLayer
請注意,我用任意數量2000
作爲裁剪最右側的下限,所以你需要根據您希望其他視圖剪輯的距離來調整數字。
如果你想剪輯自上而下,但不是左 - 右,框架會是什麼? – itsji10dra
@RoNiT你需要保留你想要添加面具的視圖邊緣剪裁矩形的邊緣,所以試試'CGRectMake(-2000,0,2000,aView.bounds.height)' –
我有一個UIView旁邊的邊緣。這個視圖和scrollview都有.7個alpha級別,所以這個技巧不會很不幸。 –