Установить кнопку фонового изображения iPhone программно - PullRequest
26 голосов
/ 16 сентября 2010

В Xcode, как вы устанавливаете фон UIButton как изображение? Или, как вы можете установить градиент фона в UIButton?

Ответы [ 8 ]

66 голосов
/ 16 сентября 2010

Полный код:

+ (UIButton *)buttonWithTitle:(NSString *)title
                       target:(id)target
                     selector:(SEL)selector
                        frame:(CGRect)frame
                        image:(UIImage *)image
                 imagePressed:(UIImage *)imagePressed
                darkTextColor:(BOOL)darkTextColor
{
    UIButton *button = [[UIButton alloc] initWithFrame:frame];

    button.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
    button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

    [button setTitle:title forState:UIControlStateNormal];
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];


    UIImage *newImage = [image stretchableImageWithLeftCapWidth:12.0 topCapHeight:0.0];
    [button setBackgroundImage:newImage forState:UIControlStateNormal];

    UIImage *newPressedImage = [imagePressed stretchableImageWithLeftCapWidth:12.0 topCapHeight:0.0];
    [button setBackgroundImage:newPressedImage forState:UIControlStateHighlighted];

    [button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];

    // in case the parent view draws with a custom color or gradient, use a transparent color
    button.backgroundColor = [UIColor clearColor];

    return button;
}

UIImage *buttonBackground = UIImage imageNamed:@"whiteButton.png";
UIImage *buttonBackgroundPressed = UIImage imageNamed:@"blueButton.png";

CGRect frame = CGRectMake(0.0, 0.0, kStdButtonWidth, kStdButtonHeight);

UIButton *button = [FinishedStatsView buttonWithTitle:title
                                               target:target
                                             selector:action
                                                frame:frame
                                                image:buttonBackground
                                         imagePressed:buttonBackgroundPressed
                                        darkTextColor:YES];

[self addSubview:button]; 

Чтобы установить изображение:

UIImage *buttonImage = [UIImage imageNamed:@"Home.png"];
[myButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
[self.view addSubview:myButton];

Чтобы удалить изображение:

[button setBackgroundImage:nil forState:UIControlStateNormal];
17 голосов
/ 27 декабря 2011

Это будет работать

UIImage *buttonImage = [UIImage imageNamed:@"imageName.png"];
[btn setImage:buttonImage forState:UIControlStateNormal];
[self.view addSubview:btn];
5 голосов
/ 11 декабря 2010

На случай, если это кому-нибудь поможет setBackgroundImage у меня не сработало, но setImage сработало

3 голосов
/ 21 апреля 2014

Вы можете установить фоновое изображение без кода!

Просто нажмите кнопку, на которую вы хотите изображение, в Main.storyboard , затем в панели утилит справа нажмите инспектор атрибутов и установить фон на изображение, которое вы хотите! Убедитесь, что у вас есть нужное изображение в файлах поддержки слева.

2 голосов
/ 11 августа 2016

Swift

Установите изображение кнопки следующим образом:

let myImage = UIImage(named: "myImageName")
myButton.setImage(myImage , forState: UIControlState.Normal)

, где myImageName - это имя вашего изображения в каталоге активов.

2 голосов
/ 01 мая 2014

При установке изображения в tableViewCell или collectionViewCell, это сработало для меня:

Поместите следующий код в cellForRowAtIndexPath или cellForItemAtIndexPath

// Получить указатель на ячейку. Ответ предполагает, что вы сделали это, но здесь для полноты.

CheeseCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cheeseCell" forIndexPath:indexPath];

// Захватить изображение из библиотеки документов и установить его в ячейку.

UIImage *myCheese = [UIImage imageNamed:@"swissCheese.png"];
[cell.cheeseThumbnail setImage:myCheese forState:UIControlStateNormal];

ПРИМЕЧАНИЕ: xCode, похоже, зациклился на этом для меня. Мне пришлось перезапустить xCode и симулятор, он работал правильно.

Предполагается, что у вас настроено cheeseThumbnail в качестве IBOutlet ... и некоторых других вещей ... надеюсь, вы достаточно знакомы с представлениями таблиц / коллекций и можете это использовать.

Надеюсь, это поможет.

0 голосов
/ 18 августа 2017

Код для фонового изображения кнопки в Swift 3.0

buttonName.setBackgroundImage(UIImage(named: "facebook.png"), for: .normal)

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 20 августа 2016

В одной строке мы можем установить изображение с этим кодом

[buttonName setBackgroundImage:[UIImage imageNamed:@"imageName"] forState:UIControlStateNormal];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...