
我在单元格中有另一个子视图也有约束.该子视图始终应与单元格具有完全相同的高度.这也非常有效.
但是,在尝试在该子视图上设置遮罩层时遇到问题.遮罩层正常工作,但子视图的高度错误,并且与单元格的高度不同.
这是我的掩码层代码:
UIBezIErPath *maskPath = [UIBezIErPath bezIErPathWithRoundedRect:self.mySubvIEw.bounds byRoundingCorners:(UIRectCornertopleft | UIRectCornertopRight | UIRectCornerBottomleft | UIRectCornerBottomright) cornerRadii:CGSizeMake(10,10)];CAShapeLayer *maskLayer = [CAShapeLayer layer];maskLayer.frame = self.mySubvIEw.bounds;maskLayer.path = maskPath.CGPath;self.mySubvIEw.layer.mask = maskLayer;
我一直在做研究,并试图找到一种方法来解决这个问题,所以我既可以设置遮罩层,也可以让子视图具有正确的高度,但我无法让它工作.
我已经看过几次推荐这个解决方案了:
[self setNeedLayout];[self layoutIfNeeded];// Customize cell after here
但这对我也不起作用.有没有办法让我知道何时应用了自动布局约束,以便我可以在之后应用遮罩层?
掩码层代码非常简单,它使用子视图的边界,并且边界是关闭的,因为它使用了在应用约束之前存在的边界并且子视图具有正确的高度.至少我认为我理解正确.
解决方法 我终于明白了.我不确定这是否是放置它的正确位置,或者它是否可能导致性能问题,但到目前为止它完美地工作:- (voID)drawRect:(CGRect)rect{ [super drawRect:rect]; UIBezIErPath *maskPath = [UIBezIErPath bezIErPathWithRoundedRect:self.mySubvIEw.bounds byRoundingCorners:(UIRectCornertopleft | UIRectCornertopRight | UIRectCornerBottomleft | UIRectCornerBottomright) cornerRadii:CGSizeMake(10,10)]; CAShapeLayer *maskLayer = [CAShapeLayer layer]; maskLayer.frame = self.mySubvIEw.bounds; maskLayer.path = maskPath.CGPath; self.mySubvIEw.layer.mask = maskLayer;} 我必须在我的UItableVIEwCell子类中覆盖drawRect:并在那里设置掩码层.
总结以上是内存溢出为你收集整理的ios – 在UITableViewCell的子视图上设置遮罩层会覆盖自动布局约束全部内容,希望文章能够帮你解决ios – 在UITableViewCell的子视图上设置遮罩层会覆盖自动布局约束所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)