Установка фонового изображения для UIButton - PullRequest
15 голосов
/ 05 января 2011

Я новичок в Objective C. Как бы установить фон этой кнопки для изображения (изображение уже находится в папке ресурсов в XCode, "blue_button.png") вместо clearColor? Кроме того, я бы предпочел, чтобы я использовал изображение в качестве формы кнопки, а не UIButtonTypeRoundedRect.

btnClear = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];

btnClear.frame = CGRectMake(115, 350, 90, 40);

[btnClear setTitle:@"Clear" forState:UIControlStateNormal];

btnClear.backgroundColor = [UIColor clearColor];

[btnClear addTarget:self action:@selector(clearAction:) 

forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btnClear];

Я знаю, как это сделать в Интерфейсном Разработчике, но я бы лучше узнал, как это сделать в XCode.

Ответы [ 7 ]

44 голосов
/ 06 января 2011

Это работает:

UIButton *btnClear = [[UIButton alloc] init];
btnClear = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
btnClear.frame = CGRectMake(115, 200, 90, 40);
[btnClear setTitle:@"Clear" forState:UIControlStateNormal];
[btnClear setBackgroundImage:[UIImage imageNamed:@"blue_button.png"] forState:UIControlStateNormal];
[btnClear addTarget:self action:@selector(clearAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btnClear];
8 голосов
/ 05 января 2011

См. Справочник по классу UIB : -setBackgroundImage:forState:

Создайте кнопку с типом UIButtonTypeCustom вместо UIButtonTypeRoundedRect, если вы не хотите использовать стиль закругленных углов.

6 голосов
/ 05 января 2011

Вам необходимо объявить вашу кнопку со следующим типом UIButtonTypeCustom:

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

Тогда вы сможете использовать следующее:

[btnClear setImage:[UIImage imageNamed:@"blue_button.png"] forState:UIControlStateNormal];

Существует 6 различных состояний управления, которыемогут быть установлены.

enum {
   UIControlStateNormal               = 0,
   UIControlStateHighlighted          = 1 << 0,
   UIControlStateDisabled             = 1 << 1,
   UIControlStateSelected             = 1 << 2,
   UIControlStateApplication          = 0x00FF0000,
   UIControlStateReserved             = 0xFF000000
};

Вот некоторые ссылки, которые могут помочь:

Ссылка на класс UIButton

Ссылка на класс UIControl

3 голосов
/ 05 января 2011

Вы можете использовать [UIColor colorWithPatternImage:], чтобы установить цвет фона для изображения.Чтобы использовать изображение, вы должны изменить стиль кнопки на пользовательский.

1 голос
/ 02 ноября 2013

, если вы хотите установить фон кнопки с изображениями в Интернете, использование SDWebImage - элегантный выбор:

#import <SDWebImage/UIButton+WebCache.h>

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, width, height)];
[button setBackgroundImageWithURL:imageURL forState:UIControlStateNormal];
1 голос
/ 17 июля 2013

Нет необходимости устанавливать кнопку на UIButtonTypeCustom - (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state метод также работает для UIButtonTypeRoundedRect

0 голосов
/ 14 июня 2019

Свифт 4 +

var btnClear = UIButton()
btnClear = UIButton(type: .custom)
btnClear.frame = CGRect(x: 115, y: 200, width: 90, height: 40)
btnClear.setBackgroundImage(UIImage(named: "blue_button.png"), for: .normal)
view.addSubview(btnClear)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...