iPhone SDK: UIBarButtonItem не отображает границу - PullRequest
3 голосов
/ 22 июня 2011

У меня есть UIToolbar, на котором я пытаюсь добавить некоторые пользовательские элементы UIBarButtonItems. Однако, когда я использую приведенный ниже код, кнопка отображается с NO border.

    UIImage *cameraRollButtonImage = [UIImage imageNamed:@"Flash.png"];
    UIButton *cameraRollButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [cameraRollButton setImage:cameraRollButtonImage forState:UIControlStateNormal];
    cameraRollButton.frame = CGRectMake(0.0, 0.0, cameraRollButtonImage.size.width, cameraRollButtonImage.size.height);

    // Initialize the UIBarButtonItem
    cameraRollButtonItem = [[UIBarButtonItem alloc] initWithCustomView:cameraRollButton];
    [cameraRollButtonItem setStyle:UIBarButtonItemStyleBordered];

    //Add the Buttons to the toolbar
    NSArray *toolbarItems = [NSArray arrayWithObject:cameraRollButtonItem];
    [self.cameraTabBar setItems:toolbarItems];

Кнопка отображается очень хорошо, однако границы кнопки НЕТ (как в стандартном случае UIBarButtonItem). Так что строка [cameraRollButtonItem setStyle:UIBarButtonItemStyleBordered];, похоже, ничего не делает.

У кого-нибудь есть опыт с этим?

Я хотел бы иметь возможность в конечном итоге поворачивать изображение в кнопке при изменении ориентации устройства (сохраняя статическую панель инструментов), поэтому простое добавление изображения в UIBarButtonItem не работает; Мне нужно, чтобы это работало с помощью свойства customView.

Большое спасибо! Brett

1 Ответ

1 голос
/ 22 июня 2011

Рассматривали ли вы создание собственного изображения кнопки с рамкой? Вы можете использовать его как backgroundImage из UIButton:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

[button setBackgroundImage:_backgroundImage_ forState:UIControlStateNormal];

// So that the button does not gray out when disabled
[button setBackgroundImage:_backgroundImage_ forState:UIControlStateDisabled]; 

[button setImage:_cameraImage_ forState:UIControlStateNormal];

button.frame = CGRectMake(0, 0, 125, 30);

Вы можете использовать button с initWithCustomView:.

PSD-файл здесь может дать вам общее представление о том, как создать свою собственную кнопку.

...