我正在创建具有自动布局启用功能的IOS应用程序。在我的 View 应用程序中,有圆角(仅顶角)。我正在使用以下功能:

- (void)setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners
{
    UIBezierPath *rounded = [UIBezierPath bezierPathWithRoundedRect:view.bounds
                                                  byRoundingCorners:corners
                                                        cornerRadii:CGSizeMake(5.0, 5.0)];
    CAShapeLayer *shape = [[CAShapeLayer alloc] init];
    [shape setPath:rounded.CGPath];
    view.layer.mask = shape;
}

并在viewDidAppear中调用此函数,如下所示:
-(void)viewDidAppear:(BOOL)animated {

    [self setMaskTo:contentView byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight];
}

这工作正常,但是问题是当应用程序处于横向模式时,当我从一个 View 导航到另一个 View 时,它正在像“人像” View 那样裁剪 View 。请让我知道这种方法有什么问题吗?

最佳答案

自动布局不会重新计算蒙版,因此每次更改布局时都必须设置蒙版。将setMaskTo:byRoundingCorners:从viewDidAppear:移至viewDidLayoutSubviews:

- (void)viewDidLayoutSubviews{
    [super viewDidLayoutSubviews];
    [self setMaskTo:contentView byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight];
}

关于ios - 带有自动布局的UIView的圆角裁剪 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24041158/

10-13 09:21