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

时间:2015-04-13 17:15:28

标签: ios iphone ios8

我在视图中使用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];

但图片看起来太大了。

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

也许您想要覆盖UIView中的layoutSubviews以获取子视图布局后的时刻?

- (void)layoutSubviews {
    [super layoutSubviews];

    if (self.hasAddedGradient) {
         [self removeGradient]; // Remove previously added gradient
    }

    self.hasAddedGradient = YES;
    [self addGradientOverlayToQuestion];
}

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