我在视图中使用自动布局,我想在放置约束后执行一个方法,因为我有一个图像,我需要真实的框架。
我正在使用 iOS 8 SDK。
这是我想要执行的方法
- (void)addGradientOverlayToQuestion {
CALayer *questionLayer = self.questionImage.layer;
CAGradientLayer *maskLayer = [CAGradientLayer layer];
maskLayer.colors = @[(id)([UIColor blackColor].CGColor), (id)([UIColor clearColor].CGColor)];
maskLayer.startPoint = CGPointMake(0, 0.7);
maskLayer.endPoint = CGPointMake(0, 1);
maskLayer.frame = questionLayer.bounds;
questionLayer.mask = maskLayer;
}
我试过了
[self layoutIfNeeded]
[self addGradientOverlayToQuestion];
是一样的,我也试过
[self.questionView layoutSubviews];
但是图像看起来太大了。
有什么想法吗?谢谢!
也许您想覆盖 UIView 中的布局子视图以获得子视图布局后的时刻?
- (void)layoutSubviews {
[super layoutSubviews];
if (self.hasAddedGradient) {
[self removeGradient]; // Remove previously added gradient
}
self.hasAddedGradient = YES;
[self addGradientOverlayToQuestion];
}
因此,请确保跟踪渐变是否已添加,并确保可以将其删除,以便可以再次添加。此方法应该是可重复的。