Установка фонового изображения для 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)