2012-01-30 19 views
9

Uygulamam özel arka plan görüntüsü olan bir düğme yerleştiriyor ve etrafımda kenarlık olmaması gerek. Kenarlığın nasıl kaldırılacağından emin değilim. Benim kodudur: öncedenios5: delete UIButton border

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    button.frame=CGRectMake(100, 170, 100,30); 


    UIImage *cbutton = [UIImage imageNamed:@"pdficon_small.png"]; 
    [button setImage:cbutton forState:UIControlStateNormal]; 
    UIButton *button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [button2 addTarget:self 
       action:@selector(openWordings:) 
    forControlEvents:UIControlEventTouchDown]; 


    [button setTag:2]; 
    [self.view addSubview:button]; 

teşekkürler.

cevap

14

Yani, button bir kenarlık olduğu anlamına gelir. tam da şu yapıyorsun sonra üstünden bir görüntü yerleştirerek, standart bir RoundedRect düğmesine yaratıyor Bunun

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

doğrultusunda

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

yerine kaldırın. kullanarak , görüntünüzü kullanmanıza izin veren temel olarak bir "boş" düğme oluşturacaktır.

2

Varsayılan iOS7 düğmelerini kullanan bir xib dosyası kullanıyorum. Kullanıcı iOS6'da olmadığı sürece onları beğenirim. Daha sonra çirkin iOS6 yuvarlatılmış düğmelerle vurulurlar. Bu tam bir hack, ama sorunlarımı çözdü. Düğmenin her iki tarafına görünümü maskeleyen 4 katman ekler. iOS7 görünümü ile tutmak için

- (void)maskUglyIos6Border:(UIButton *)button 
{ 
    CALayer *layer = [CALayer layer]; 
    // top layer 
    layer.frame = CGRectMake(0, 0, button.layer.frame.size.width, 5); 
    layer.backgroundColor = [UIColor whiteColor].CGColor; 
    [button.layer addSublayer:layer]; 

    // bottom layer 
    CALayer *layer2 = [CALayer layer]; 
    layer2.frame = CGRectMake(0, button.layer.frame.size.height - 5, button.layer.frame.size.width, 5); 
    layer2.backgroundColor = [UIColor whiteColor].CGColor; 
    [button.layer addSublayer:layer2]; 

    // left layer 
    CALayer *layer3 = [CALayer layer]; 
    layer3.frame = CGRectMake(0, 0, 5, button.layer.frame.size.height); 
    layer3.backgroundColor = [UIColor whiteColor].CGColor; 
    [button.layer addSublayer:layer3]; 

    // right layer 
    CALayer *layer4 = [CALayer layer]; 
    layer4.frame = CGRectMake(button.layer.frame.size.width - 5, 0, 5, button.layer.frame.size.height); 
    layer4.backgroundColor = [UIColor whiteColor].CGColor; 
    [button.layer addSublayer:layer4]; 

} 

, ben vurgulayarak devre dışı bırakma ve yerine showsTouchWhenHighlighted kullanarak öneriyoruz.

1

Düz beyaz bir arka plan kullandığımdan bu benim için çözdü. UIButton'dan miras aldım, böylece storyboard'u kullanarak kolayca atayabilirim.

@implementation MyButton 

- (id)initWithFrame:(CGRect)frame 
{ 
self = [super initWithFrame:frame]; 
if (self) { 
    // adjust buttons -> "remove" border if we don't run on ios 7 
    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { 
     [self setBackgroundColor:[UIColor whiteColor]]; 
    } 

} 
return self; 

}