UIButton.layer.cornerRadius 不存在?

Posted

技术标签:

【中文标题】UIButton.layer.cornerRadius 不存在?【英文标题】:UIButton.layer.cornerRadius doesn't exist? 【发布时间】:2010-12-05 04:59:20 【问题描述】:

我正在实现一个功能最少的自定义 UIButton。 .h 文件:

#import <Foundation/Foundation.h>
@interface CustomButton : UIButton 

@end

我在 .m 文件的 (A) 行遇到编译错误:

- (id)initWithCoder:(NSCoder *)coder 
    if(self = [super initWithCoder:coder]) 

        CALayer *layer = [self layer];
        NSLog(@"layer=%@",layer);
        NSLog(@"delegate=%@",[layer delegate]);

#ifdef __IPHONE_3_0
        layer.cornerRadius = 4.0f; // (A) error: request for member 'cornerRadius' in something not a structure or union
#endif
    
    return self;

如果我注释掉行 (A),我会得到以下输出:

2009-10-08 17:35:06.681 MyApp[2596:4e07] layer=<CALayer: 0x3cdf520>
2009-10-08 17:35:06.683 MyApp[2596:4e07] delegate=<CustomButton: 0x3cdaff0; baseClass = UIButton; frame = (9 212; 255 55); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x3cdf520>>

根据documentation,CALayer 应该有一个cornerRadius 属性。我正在使用 iPhone SDK 3.1,甚至添加了 #ifdef 来确认这一点。

谁能告诉我我忽略了明显的地方吗?

谢谢

【问题讨论】:

【参考方案1】:

确保你

#import 
到你的头文件或实现文件中。

【讨论】:

如果您的意思是“#import "CustomButton.h",我是在 .m 文件的开头这样做的。 呃。不,对不起,格式搞砸了。 #import 啊!最后!多年来我一直无法使用cornerRadius,因为我不知道这一点。干杯。 如果你在 button 上添加图片,一定要设置 cliptobounds = YES; button.imageview.layer.cornerradius = XX【参考方案2】:

试试这个,

 #import <QuartzCore/QuartzCore.h>

    Button.layer.cornerRadius = 15.0;
    [Button.layer setMasksToBounds:YES];

【讨论】:

这个问题几年前就已经正确回答了,你的回答什么也没增加。 你的问题解决了我的问题,但我的问题不是这个问题。仍然为你的贡献点赞。 :)

以上是关于UIButton.layer.cornerRadius 不存在?的主要内容,如果未能解决你的问题,请参考以下文章