Возможно ли создать прозрачный UIButton с отображением только границ и заголовка

#iphone #xcode #uibutton

#iPhone #xcode #uibutton

Вопрос:

На самом деле вопрос прост. Я не знаю, что добавить к названию моего вопроса. Мне нужна кнопка, у которой есть граница и заголовок, и ничего больше. Остальное прозрачно, и фон моего представления виден через кнопку. Я много искал его в Google и ничего не нашел. Заранее спасибо

Ответ №1:

Вы можете создать кнопку типа UIButtonTypeCustom и добавить границу к ее CALayer.

 [[myButton layer] setCornerRadius:10];
[[myButton layer] setBorderColor:[[UIColor blackColor] CGColor]];
[[myButton layer] setBorderWidth:2];
  

вам необходимо #import <QuartzCore/QuartzCore.h> использовать методы слоя.

РЕДАКТИРОВАТЬ (ответ на комментарии)

Если вы создали кнопку в Interface Builder и подключились к соответствующей розетке, вам не следует создавать новую кнопку в коде, что вы и делаете

 backArrowButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
  

Когда вы добавили кнопку в Interface Builder и подключили ее к розетке, вы уже создали ее там, поэтому просто убедитесь, что в IB для нее установлено значение Custom, и просто установите свойства слоев в коде, как показано выше.

Комментарии:

1. Это не работает. Ничего не изменилось. Я сделал так, как вы сказали. backArrowButton = [[UIButton buttonWithType:UIButtonTypeCustom] сохранить]; [[backArrowButton layer] setCornerRadius:10]; [[backArrowButton layer] setBorderColor: [[UIColor blackColor] CGColor]]; [[backArrowButton layer] setBorderWidth: 2]; и я импортировал QuartzCore, но все напрасно

2. вы установили рамку кнопки? работает ли кнопка, даже если вы ее не видите?

3. нет, я не устанавливал никаких рамок. Должен ли я? Кнопка работает нормально. Позвольте мне рассказать вам ВСЕ, ЧТО я сделал. Я просто поместил кнопку в представление в xib-файле, затем создал outlet backArrowButton, сделал его свойством, синтезировал его, подключил его к кнопке в xib-файле перетаскиванием и написал четыре строки кода, которые приведены выше в методе viewDidLoad . Также я импортировал <QuartzCore/QuartzCore.h> . Вот и все. Кнопка остается обычной кнопкой. Я не вижу никаких изменений. Что я пропустил?

4. смотрите Мое редактирование ответа, оно объясняет, что вы делаете неправильно.

5. Да благословит тебя Бог, приятель. Вы мне очень помогли

Ответ №2:

Да, просто сделайте свою графику полностью прозрачной с нужной вам рамкой. Затем:

 UIButton* button = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
[button setImage:[UIImage imageNamed:@"YOUR-IMAGE" forState:UIControlStateNormal];
...