我有這個PNG文件,我想用它作爲UIView
的掩碼。Swift:Mask Alignment +自動佈局約束條件
視圖必須是:
- 20像素/從每個側
- 一個完全平方
- 垂直居中點
我設置以下的制約要做到這一點:
但是,看起來這些限制並不能很好地與掩碼一起玩。當這些約束和mask
屬性設置,我得到如下:
但我的觀點一樣,看起來就像面具上面,除了橙(這裏的backgroundColor
僅僅是simplicity-我後來添加需要被屏蔽子視圖)
然而,當沒有任何限制設置,則mask
似乎正常工作,我得到這樣的事情(borderColor
添加唯一的視覺目的):
這裏是我的代碼(viewForLayer
是我在故事板製作一個UIView):
viewForLayer.layer.borderColor = UIColor.redColor().CGColor
viewForLayer.layer.borderWidth = 10
var mask = CALayer()
mask.contents = UIImage(named: "TopBump")!.CGImage
mask.frame = CGRect(x: 0, y: 0, width: viewForLayer.bounds.width, height: viewForLayer.bounds.height)
mask.position = CGPoint(x: viewForLayer.bounds.width/2, y: viewForLayer.bounds.height/2)
viewForLayer.layer.mask = mask
viewForLayer.backgroundColor = UIColor.orangeColor()
的問題是,雖然,現在的觀點是不正確的大小或在合適的位置,它不不遵循上述規則 - 「觀點必須是:」。 如何才能使mask
正常工作,並同時設置自動佈局約束?
你確定這個'viewForLayer'具有正確的尺寸嗎? – Kametrixom
不知道你的意思是正確的大小,但我在故事板中設置了約束,當我運行它時沒有設置圖層的「mask」屬性,它是一個橙色的正方形,佔據與蒙版時完全相同的空間,除了右下角,顯然也是橙色的。 – 5813
嘗試使用邊框插入橙色視圖以查看約束是否正確。我懷疑橙色背景視圖正在擴展,通過屏幕的右邊界。 – Laurent