ios5: удалить границу UIButton - PullRequest
9 голосов
/ 30 января 2012

Мое приложение размещает кнопку с пользовательским фоновым изображением, и мне не нужна рамка вокруг нее.Я не уверен, как убрать границу.Мой код:

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

Заранее спасибо.

Ответы [ 3 ]

14 голосов
/ 30 января 2012

Я предполагаю, что вы имеете в виду границу вокруг button.Чтобы удалить его, замените строку

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

на эту

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

. То, что вы сейчас делаете, - это создание стандартной кнопки RoundedRect, а затем размещение изображения поверх.Использование UIButtonTypeCustom создаст, по сути, «пустую» кнопку, позволяющую использовать ваше изображение.

2 голосов
/ 09 октября 2013

Я использую xib-файл, который использует кнопки iOS7 по умолчанию. Они мне нравятся, если только пользователь не на iOS6 - тогда они попадают под уродливые закругленные кнопки iOS6. Это полный взлом, но решил мои проблемы. Он просто вставляет 4 слоя с каждой стороны кнопки, маскируя внешний вид.

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

}

Чтобы сохранить внешний вид iOS7, я бы порекомендовал отключить подсветку и вместо этого использовать showsTouchWhenHighlighted.

1 голос
/ 24 марта 2014

Так как я использую простой белый фон, это решило это для меня. Я наследую от UIButton, поэтому могу легко назначить его с помощью раскадровки.

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

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...