16

最小限の機能でカスタム 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>>

ドキュメントによると、CALayer には cornerRadius プロパティが必要です。私は iPhone SDK 3.1 を使用しており、これを確認するために #ifdef を追加しました。

誰かが私が明白に見落とした場所を教えてもらえますか?

ありがとう

4

2 に答える 2

48

確認してください

#import <QuartzCore/QuartzCore.h>
ヘッダーまたは実装ファイルに。

于 2009-10-09T01:09:26.943 に答える
2

これを試して、

 #import <QuartzCore/QuartzCore.h>

    Button.layer.cornerRadius = 15.0;
    [Button.layer setMasksToBounds:YES];
于 2014-01-05T06:47:27.163 に答える