左右两边的圆角不正确

时间:2016-11-15 05:31:04

标签: ios swift rounded-corners

我正在工作或项目,我必须从左上角和右上角查看角落。我正在使用autolayout。我的视图宽度是296.这是设计

first cell

根据我在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

但我的问题是我得到了这个输出

enter image description here

我给view_.bounds,但我不知道为什么它需要该视图的原始帧值。在像iphone 4s和5这样的小型设备中,它可以提供完美的输出,但在大型设备中它会像screeshot一样出现问题。

请帮帮我

2 个答案:

答案 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