在视图中放置约束后执行 iOS 方法



我在视图中使用自动布局,我想在放置约束后执行一个方法,因为我有一个图像,我需要真实的框架。

我正在使用 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];
}

因此,请确保跟踪渐变是否已添加,并确保可以将其删除,以便可以再次添加。此方法应该是可重复的。

最新更新