【问题标题】:How to use CAGradientLayer in layoutSubview by changing orientation如何通过更改方向在 layoutSubview 中使用 CAGradientLayer
【发布时间】:2013-09-13 09:49:39
【问题描述】:

我在layoutSubview 中创建了一个CAGradientLayer。这可行,但如果我改变方向,旧框架似乎不会消失。

- (void) layoutSubviews
{ 
    CAGradientLayer *bgLayer = [GradientClass getGradient];
    bgLayer.frame = [[self.subviews objectAtIndex:0] frame];
    [self.layer insertSublayer:bgLayer atIndex:0];
}

【问题讨论】:

    标签: ios objective-c gradient layoutsubviews


    【解决方案1】:

    那是因为在您旋转设备时再次调用layoutSubviews,导致创建第二个CAGradientLayer

    您需要做的只是保留对您的CAGradientLayer 的引用并修改其框架。

    // Define bgLayer in your interface
    @property (strong, nonatomic) CAGradientLayer *bgLayer;
    
    - (void) layoutSubviews
    { 
        if (!self.bgLayer) {
            self.bgLayer = [GradientClass getGradient];
            [self.layer insertSublayer:bgLayer atIndex:0];
        }
    
        self.bgLayer.frame = [[self.subviews objectAtIndex:0] frame];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多