菜鸟教程小白 发表于 2022-12-12 20:48:19

objective-c - CAGradientLayer 作为 UIView 的 layerClass


                                            <p><p>我试图通过覆盖 UIView 的 layerClass 类方法将 CAGradientLayer 用作 UIView 子类的根层。我为 UIButton 子类做了完全相同的事情,并且一切正常,但是对于 UIView,我没有看到渐变,我只看到默认的白色 View 背景。 </p>

<p>这是我的代码:</p>

<pre><code>#import &lt;UIKit/UIKit.h&gt;
#import &#34;UIView+NBStyle.h&#34;

@interface NBStylizedView : UIView

@property (nonatomic, strong) UIColor* highColor;
@property (nonatomic, strong) UIColor* lowColor;

@end

...

#import &#34;NBStylizedView.h&#34;
#import &lt;QuartzCore/QuartzCore.h&gt;

@implementation NBStylizedView

@synthesize highColor;
@synthesize lowColor;

+ (Class) layerClass {
    return ;
}

- (void)drawRect:(CGRect)rect {
    if (self.highColor &amp;&amp; self.lowColor) {
      CAGradientLayer* gLayer = (CAGradientLayer*) self.layer;
      [gLayer setColors:
         [NSArray arrayWithObjects:
          (id),
          (id), nil]];
    }   
    ;
}

- (void)setHighColor:(UIColor*)color {
    highColor = color;
    ;
}

- (void)setLowColor:(UIColor*)color {
    lowColor = color;
    ;
}

@end
</code></pre>

<p>任何人都可以阐明我的问题所在吗? </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我试过你的代码,一开始也没有看到渐变。如果我在 View 的 awakeFromNib 方法中将 View 的背景颜色设置为 clearColor,它就起作用了。</p></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c - CAGradientLayer 作为 UIView 的 layerClass,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/10560815/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/10560815/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - CAGradientLayer 作为 UIView 的 layerClass