Utt*_*dam 9 rounded-corners ios autolayout
我正在使用autolayout enable创建IOS应用程序.在我的视图应用中,有圆角(仅限顶角).我使用以下功能:
- (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;
}
Run Code Online (Sandbox Code Playgroud)
并在viewDidAppear中调用此函数,如:
-(void)viewDidAppear:(BOOL)animated {
[self setMaskTo:contentView byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight];
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但问题是当应用程序处于横向模式时,当我从一个视图导航到另一个视图时,它会像纵向视图一样裁剪视图.请告诉我这种方法有什么问题吗?
小智 14
Autolayout不会重新计算您的蒙版,因此每次布局更改时都必须设置蒙版.移动setMaskTo:byRoundingCorners: from viewDidAppear: to viewDidLayoutSubviews:
- (void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
[self setMaskTo:contentView byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3374 次 |
| 最近记录: |