2014-02-15 17 views
0

屬性我有一個按鈕,我想添加一個邊框這樣的: .H如何爲客戶UIButon

@interface MyButton : UIButton 

.M

@implementation MyButton 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 


    } 

    self.layer.borderWidth=1.0f; 
    self.layer.cornerRadius = 4; 
    self.layer.borderColor=[[UIColor blueColor] CGColor]; 

    return self; 
} 

邊框沒有設置,我究竟做錯了什麼?

+0

Quartz框架是否已鏈接? – erdekhayser

回答

0

添加

self.layer.masksToBounds = YES; 

此外,如果你正在創建通過筆尖或故事板文件initWithFrame方法您的按鈕將不會被調用。在這種情況下,不要忘記把你的額外的代碼在awakeFromNib方法

- (void)awakeFromNib 
{ 
    self.layer.masksToBounds = YES; 
    self.layer.borderWidth=1.0f; 
    self.layer.cornerRadius = 4; 
    self.layer.borderColor=[[UIColor blueColor] CGColor]; 
} 
1

的UIButton並不意味着被繼承,我建議使用一個類別,如果你正在試圖做的是風格的按鈕。下面是一個例子類來完成你想要什麼......請注意,這還沒有通過編譯器運行,但你的想法:

的UIButton + Styles.h

#import <UIKit/UIKit.h> 

@interface UIButton (Styles) 

-(void)styleWithBorderColor:(UIColor *)color; 
@end 

.M

#import "UIButton+Styles.h" 
#import <QuartzCore/QuartzCore.h> 

@implementation UIButton (CURStyles) 
-(void)styleWithBorderColor:(UIColor *)color 
{ 
    self.layer.masksToBounds = YES; 
    self.layer.cornerRadius = 4.0f; 
    self.layer.borderWidth = 1.0f; 
    self.layer.borderColor = color.CGColor;   
} 
@end 

現在,當你想風格的按鈕可簡單地導入類,並調用它像這樣:

[myButton styleWithBorderColor:[UIColor whiteColor]]; 

編輯: 請參閱評論...這些都應該作爲前綴,以避免與框架方法混亂

+1

你真的應該前綴類別方法 –

+0

保羅是正確的。請參閱這些指南https://developer.apple.com/library/ios/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html上面的方法應該以三個字母「xyz_styleWithBorderColor」 – Msencenb

0

沒有什麼錯子類UIButton的所有..我建議也許你需要設置

self.backgroundColor = nil; // or [UIColor clearColor] 
self.layer.backgroundColor = desiredBackgroundColor.CGColor; 

的UIView中的backgroundcolor覆蓋圖層上的邊框,將背景顏色移動到圖層上,而不是將其放在邊框上(並將其剪貼到邊框上)