2009-10-09 101 views
16

我正在實現具有最小功能的自定義UIButton。 .h文件:UIButton.layer.cornerRadius不存在?

#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來確認。

有人可以告訴我我忽略了哪些顯而易見的地方嗎?

感謝

回答

48

確保您

#import <QuartzCore/QuartzCore.h>
到你的頭或實現文件。

+0

如果你的意思是「#進口‘CustomButton.h’,我這樣做,在.m文件的開頭。 – tba 2009-10-09 01:39:00

+1

啊。對不起,先生,格式化搞砸的事情了。 #import 2009-10-09 02:16:52

+0

感謝!工作 – tba 2009-10-09 02:28:58

2

試試這個,

#import <QuartzCore/QuartzCore.h> 

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

這個問題在幾年前被正確回答,你的回答沒有增加任何內容 – jrturton 2014-01-05 09:22:56

+1

你的問題解決了我的問題,但我的問題不是t他的問題......仍然贊成你的貢獻。 :) – 2014-05-24 12:02:23