UIBezierPath不会绘制圆角底角

Mer*_*ert 11 iphone rounded-corners uiview ios uibezierpath

我正试图为我的观点制作圆角并解决一个奇怪的问题.

我使用以下代码为我的视图制作圆角

bezierPath = [UIBezierPath bezierPathWithRoundedRect:btnView.bounds
                                       byRoundingCorners:UIRectCornerAllCorners
                                             cornerRadii:radius];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    maskLayer.frame = btnView.bounds;
    maskLayer.path = bezierPath.CGPath;
    btnView.layer.mask = maskLayer;
Run Code Online (Sandbox Code Playgroud)

问题是,它不适用于底角.如果我UIRectCornerBottomLeft没有使用任何事情,如果我UIRectCornerAllCorners只使用顶角是圆的.

编辑:我不使用layer.cornerRadius因为我只想圆底角.

事实证明,如果我UIViewAutoresizingFlexibleHeight从视图中删除自动调整遮罩,我没有问题.但我想使用autoresizing mask.有可能,如果是的如何?

我已经尝试在设置图层蒙版之前和之后设置autoresizingMask.没运气!

Oli*_*gey 10

我刚刚遇到类似的问题需要花费数小时才能解决 - 答案很简单:将我的代码从viewDidLoad移到viewDidLayoutSubviews:这是自动布局完成后调用的第一个方法....所以我怀疑我确实有4个圆角但不知何故,他们离屏幕的边缘.


Mer*_*ert 3

在我得到另一个答案之前,如果可以将 autoresizingMask 与 一起使用UIBezierPath,我说“否”并标记为正确答案。

我不会删除我的问题,因为任何人都可以在不知道原因的情况下解决同样的问题。