2012-01-30 49 views
9

Ứng dụng của tôi đang đặt nút có hình nền tùy chỉnh và tôi không cần đường viền xung quanh. Tôi không chắc chắn cách xóa đường viền. Mã của tôi là:ios5: xóa đường viền UIButton

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]; 

Xin cảm ơn trước.

Trả lời

14

Tôi giả sử bạn có nghĩa là có một đường viền biên giới button. Để loại bỏ nó thay thế dòng

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

với điều này

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

gì bạn đang làm ngay bây giờ là tạo ra một nút RoundedRect tiêu chuẩn, sau đó đặt một hình ảnh trên đầu trang. bằng cách sử dụng UIButtonTypeCustom sẽ tạo ra bản chất là nút "trống", cho phép bạn sử dụng hình ảnh của mình.

2

Tôi đang sử dụng tệp xib sử dụng các nút iOS7 mặc định. Tôi thích chúng trừ khi người dùng trên iOS6 - sau đó họ bị ảnh hưởng bởi các nút làm tròn iOS6 xấu xí. Đây là một hack hoàn chỉnh, nhưng đã giải quyết được vấn đề của tôi. Nó chỉ chèn 4 lớp ở mỗi bên của nút che giấu sự xuất hiện.

- (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]; 

} 

Để tiếp tục với giao diện iOS7, tôi khuyên bạn nên tắt đánh dấu và thay vào đó sử dụng showsTouchWhenHighlighted.

1

Vì tôi sử dụng nền trắng trơn, điều này đã giải quyết nó cho tôi. Tôi kế thừa từ UIButton vì vậy tôi có thể gán nó dễ dàng bằng cách sử dụng bảng phân cảnh.

@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; 

}

Các vấn đề liên quan