• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

objective-c - CAGradientLayer 作为 UIView 的 layerClass

[复制链接]
菜鸟教程小白 发表于 2022-12-12 20:48:19 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

这是我的代码:

#import <UIKit/UIKit.h>
#import "UIView+NBStyle.h"

@interface NBStylizedView : UIView

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

@end

...

#import "NBStylizedView.h"
#import <QuartzCore/QuartzCore.h>

@implementation NBStylizedView

@synthesize highColor;
@synthesize lowColor;

+ (Class) layerClass {
    return [CAGradientLayer class];
}

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

- (void)setHighColorUIColor*)color {
    highColor = color;
    [self.layer setNeedsDisplay];
}

- (void)setLowColorUIColor*)color {
    lowColor = color;
    [self.layer setNeedsDisplay];
}

@end

任何人都可以阐明我的问题所在吗?



Best Answer-推荐答案


我试过你的代码,一开始也没有看到渐变。如果我在 View 的 awakeFromNib 方法中将 View 的背景颜色设置为 clearColor,它就起作用了。

关于objective-c - CAGradientLayer 作为 UIView 的 layerClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10560815/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap