And*_*nie 3 xcode uitableview ios swift2
我正在尝试为我在故事板中创建的 UITableViewCell 创建一个圆角矩形。我在 Xcode 7 中使用 Swift 2。我在原型单元格中有两个视图,topView 和 Bottom 视图。我希望 topView 的顶角是圆的,而 bottomView 的角是圆的。
在awakeFromNib(稍后可能会去其他地方更好):
...
self.topView.backgroundColor = UIColor.redColor()
self.bottomView.backgroundColor = UIColor.grayColor()
self.setMaskToView(self.topView, corners:UIRectCorner.TopLeft.union(UIRectCorner.TopRight))
self.setMaskToView(self.bottomView, corners: UIRectCorner.BottomLeft.union(UIRectCorner.BottomRight))
...
Run Code Online (Sandbox Code Playgroud)
在单独的函数中(基于对另一个堆栈溢出帖子的回答):
func setMaskToView(view : UIView, corners: UIRectCorner) {
let rounded = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: 10, height: 10))
let mask = CAShapeLayer()
mask.path = rounded.CGPath
view.layer.mask = mask
}
Run Code Online (Sandbox Code Playgroud)
请注意,我还尝试了 [.TopRight, .TopLeft] 而不是 union(),基于各种其他堆栈溢出帖子。似乎什么都改变不了。还绝望地清理并重新启动了Xcode。这就是我得到的:
如果有人对可能发生的事情有任何想法,我将不胜感激。
谢谢。
你有两个问题。
awakeFromNib基于视图边界做任何事情还为时过早,因为那时还没有为设备调整视图大小。您应该在 中创建遮罩层awakeFromNib,但应该在 中设置它们的路径layoutSubviews。
在 中setMaskToView(_:corners:),您需要使用view.bounds而非self.bounds来创建路径。
| 归档时间: |
|
| 查看次数: |
2275 次 |
| 最近记录: |