我在视图中使用autoLayout,我想在放置约束后执行一个方法,因为我有一个图像,我需要真正的帧。
我正在使用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];
但图片看起来太大了。
有什么想法吗? 谢谢!
答案 0 :(得分:0)
也许您想要覆盖UIView中的layoutSubviews以获取子视图布局后的时刻?
- (void)layoutSubviews {
[super layoutSubviews];
if (self.hasAddedGradient) {
[self removeGradient]; // Remove previously added gradient
}
self.hasAddedGradient = YES;
[self addGradientOverlayToQuestion];
}
因此,请确保跟踪是否已添加渐变,并确保您可以将其删除,以便再次添加。这种方法应该是可重复的。