我正在工作或项目,我必须从左上角和右上角查看角落。我正在使用autolayout。我的视图宽度是296.这是设计
根据我在tableview的第一个单元格中的设计,我的代码在选中 视图
的圆角处 let cell = tableView.dequeueReusableCellWithIdentifier("cell1", forIndexPath: indexPath)
let view_ = cell.viewWithTag(10)! as UIView
let maskLayer : CAShapeLayer = CAShapeLayer()
let maskpath = UIBezierPath(roundedRect: view_.bounds, byRoundingCorners: [.TopLeft,.TopRight], cornerRadii: CGSizeMake(10, 10))
maskLayer.frame = view_.bounds;
maskLayer.path = maskpath.CGPath;
view_.layer.mask = maskLayer
cell.selectionStyle = UITableViewCellSelectionStyle.None
return cell
但我的问题是我得到了这个输出
我给view_.bounds
,但我不知道为什么它需要该视图的原始帧值。在像iphone 4s和5这样的小型设备中,它可以提供完美的输出,但在大型设备中它会像screeshot一样出现问题。
请帮帮我
答案 0 :(得分:1)
问题是您过早运行代码 。您的代码取决于我们知道view_.bounds
:
let maskpath = UIBezierPath(roundedRect: view_.bounds, byRoundingCorners: [.TopLeft,.TopRight], cornerRadii: CGSizeMake(10, 10))
maskLayer.frame = view_.bounds;
但是在您的代码运行时,该值尚未最终确定。这里需要记住的是视图在放入界面时调整大小。您希望推迟代码,直到 view_.bounds
之后的达到最终值(也称为 layout )。
答案 1 :(得分:0)
根据设备屏幕的宽度将tableCellView的框架定义为UIScreen.main.bounds.width*0.9