【发布时间】:2015-03-26 20:00:18
【问题描述】:
我有一个 UIView,我想用另一个 UIView 掩盖它,从它的中心打一个洞。这是我的viewDidLoad:
- (void)viewDidLoad {
[super viewDidLoad];
[self.view addSubview:self.viewToMask];
[self.view addSubview:self.theMask];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.viewToMask attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.viewToMask attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0.0]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[cyan(200)]" options:0 metrics:nil views:@{@"cyan": self.viewToMask}]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[cyan(200)]" options:0 metrics:nil views:@{@"cyan": self.viewToMask}]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.theMask attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.viewToMask attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.theMask attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.viewToMask attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0.0]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[mask(100)]" options:0 metrics:nil views:@{@"mask": self.theMask}]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[mask(100)]" options:0 metrics:nil views:@{@"mask": self.theMask}]];
}
它准确地给出了我正在寻找的东西,减去掩蔽:
如果我再添加一行:
[self.viewToMask setMaskView:self.theMask];
两个视图都消失了 --- 小视图 (self.theMask) 掩盖了整个大视图 (self.viewToMask),即使它只有一半大小。有谁明白这里发生了什么?自动布局不能用UIView.maskView吗?
【问题讨论】:
-
我知道当你使用iOS 8之前的版本(
-[CALayer maskLayer])时,你必须定位遮罩层的坐标空间,而遮罩层在普通视图层次结构中不存在.我想知道这里是否发生了类似的事情? -
这完全是这里发生的事情。非常感谢。
-
那么效果如何?你能用
maskView使用自动布局吗?
标签: ios objective-c uiview autolayout