Установка фонового изображения для UIButton

Я новичок с 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];

Я знаю, как это сделать в Interface Builder, но я бы предпочел узнать об этом в XCode.

Ответы

Ответ 1

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

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

Ответ 2

См. ссылка класса UIButton: -setBackgroundImage:forState:

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

Ответ 3

Вам нужно объявить свою кнопку со следующим типом 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

Ответ 4

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

Ответ 5

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

Ответ 6

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

#import <SDWebImage/UIButton+WebCache.h>

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(x, y, width, height)];
[button setBackgroundImageWithURL:imageURL forState:UIControlStateNormal];

Ответ 7

Свифт 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)