2014-02-09 41 views
4

我有一個UIScrollView,其中包含部分繪製在滾動視圖之外的其他子視圖。這些視圖在滾動視圖上方垂直延伸。是否可以只允許子視圖在滾動視圖的頂部之外繪製,並且不允許它們在滾動視圖的左側和右側之外繪製?你可以限制UIView剪輯子視圖到視圖的某一側嗎?

發生了什麼,是因爲當我手動向左和向右滾動時,由於內容大小,子視圖被繪製在滾動視圖之外。一旦子視圖滾動到滾動視圖的框架之外,我想剪輯子視圖。

任何建議或可能嗎?

回答

1

你不能指定你想剪輯的單個邊,但是你可以通過將新的UIView放在你想要剪裁的邊緣(並且有效地剪裁它)旁邊來僞裝。或者,您可以考慮改變視圖層次結構的方式,以便根本不必剪輯子視圖(也許通過以某種方式調整滾動視圖的邊界和佈局)。

+0

我有一個UIView旁邊的邊緣。這個視圖和scrollview都有.7個alpha級別,所以這個技巧不會很不幸。 –

4

我已經設法通過使用layermask屬性和CALayer來實現此效果。下面的代碼片段剪輯從頂部僅視圖和視圖的左側:

let maskLayer = CALayer() 
maskLayer.backgroundColor = UIColor.blackColor().CGColor 
maskLayer.frame = CGRectMake(0, 0, 2000, 2000) 

aView.layer.mask = maskLayer 

請注意,我用任意數量2000作爲裁剪最右側的下限,所以你需要根據您希望其他視圖剪輯的距離來調整數字。

+0

如果你想剪輯自上而下,但不是左 - 右,框架會是什麼? – itsji10dra

+0

@RoNiT你需要保留你想要添加面具的視圖邊緣剪裁矩形的邊緣,所以試試'CGRectMake(-2000,0,2000,aView.bounds.height)' –

相關問題