UIButton background VS UIButton imageview.view - PullRequest
4 голосов
/ 02 февраля 2012

В чем разница между UIButton background и UIButton imageview.view Я пробовал myButton.imageView.image=[UIImage imageNamed:@"image.png"];, тогда ничего не происходит, но когда я использую [myButton setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];, фон кнопки меняется.

Спасибо!

Ответы [ 4 ]

4 голосов
/ 02 февраля 2012

myButton.imageView.image является свойством только для чтения и поэтому не может быть изменено следующим образом.тогда как setBackgroundImage - это метод, который правильно устанавливает фон.

// EDIT

метод setImage для UIButton ТРЕБУЕТ двух аргументов,

setImage:(UIImage *) forState:(UIControlState)

, таким образом, используя вышеупомянутый методработает нормально, а другие нет.

2 голосов
/ 02 февраля 2012

imageView из UIButton не означает фоновое изображение. Это вид изображения, которое отображается рядом с заголовком. Таким образом, imageView всегда будет создаваться при необходимости. Если вы установили yourButton.imageView.image до создания, отображать нечего, потому что imageView равно нулю.

Таким образом, UIButton имеет состояния (UIControlState) для управления, создания или удаления как фонового изображения, так и imageView при изменении между состояниями. (также название)

Пожалуйста, ознакомьтесь с документацией UIButton: http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html

вы увидите два разных метода для изображений

– setBackgroundImage:forState:
– setImage:forState:
2 голосов
/ 02 февраля 2012
[myButton setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateHighlighted];

Всякий раз, когда вы вызываете текущий ImageView, он возвращает фоновое изображение выбранного состояния

. Различные характеристики подсвечиваются / выбираются / отключаются

1 голос
/ 02 февраля 2012

@ Крутой парень прав - UIButton имеет свойство readonly для своего imageView.Таким образом, вы не можете напрямую установить изображение, обратившись к изображению imageView.

@property(nonatomic,readonly,retain) UIImageView *imageView   __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);

Используйте удобный метод

[UIButtonInstance setImage:imageName forState:buttonState];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...