2013-04-15 4 views
1

Я пробовал tintColor = [UIColor redColor], и он выполняет эту работу, но при нажатии кнопки отображается только ожидаемый цвет.Как установить цвет фона кнопки UIButtonTypeRoundedRect?

В Coloration of UIButtons of type UIButtonTypeRoundedRect они отвечают на один и тот же вопрос, но вам нужно изображение для его реализации, есть ли способ сделать это без изображения?

  • Здесь не то, что я хочу: image

  • Вот что я получаю, используя изображения: image

Помните ... НЕТ ИЗОБРАЖЕНИЯ!

+0

@ Balz, проверьте измененный ответ. который должен позаботиться о вашей проблеме. просто удалите рамку рамки, если вы не хотите ее использовать, так что это будет только один цвет. –

+0

проверить изменения в моем ответе. –

ответ

1

Вы можете создать метод для генерации UIImage из UIColor, а затем установить возвращаемый изображение в качестве фона кнопки, например:

- (UIImage *)imageWithColor:(UIColor *)color { 
    CGRect rect = CGRectMake(0, 0, 1, 1); 
    UIGraphicsBeginImageContext(rect.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetFillColorWithColor(context, [color CGColor]); 

    CGContextFillRect(context, rect); 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return image; 
} 


UIImage *image = [self imageWithColor:[UIColor colorWithRed:151.0/255.0 
                 green:36.0/255.0 
                 blue:40.0/255.0 
                 alpha:1.0]]; 
[self.button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
[self.button setBackgroundImage:image forState:UIControlStateNormal]; 
self.button.layer.cornerRadius = 6.0; 
self.button.layer.borderWidth = 1.0; 
self.button.layer.borderColor = [UIColor darkGrayColor].CGColor; 
self.button.clipsToBounds = YES; 

С помощью этого я получаю

enter image description here

+0

Привет, это создало [это] (http://s12.postimg.org/u5d6ipep9/getting.png) ... но мне нужно что-то вроде [this] (http://s22.postimg.org/3q0d9s6ap/Expected .png). – Balz

+0

Да, я вижу, я отредактировал свой ответ, проверьте конфигурацию кнопки – tkanzakic

+0

Есть ли способ добавить вертикальный градиент к цвету кнопки? ... посмотрите на эту кнопку [изображение кнопки] (http: /i.stack.imgur.com/uvNqn.png) ... он имеет более темный красный цвет внизу и более светлый красный цвет вверху. – Balz

2

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

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
btn.frame = CGRectMake(100, 100, 100,50); 
[btn setTitle:@"Hello" forState:UIControlStateNormal]; 
[btn setBackgroundColor:[UIColor colorWithRed:128.0/255.0f green:0.0/255.0f blue:0.0/255.0f alpha:0.7]]; 
btn.frame = CGRectMake(100.0, 100.0, 120.0, 50.0);//width and height should be same value 
btn.clipsToBounds = YES; 

btn.layer.cornerRadius = 20;//half of the width 
btn.layer.borderColor=[UIColor redColor].CGColor; 
btn.layer.borderWidth=2.0f; 

[self.view addSubview:btn]; 

вы можете изменить [UIColor ColorWithRed: горе все, что вы хотите или даже использовать [UIColor redColor] или любые другие вещи, которые вы хотите сделать с этим.

вот снимок экрана:

enter image description here

добавить цвет фона к округлой кнопке невозможно, изменить тип кнопки с обычаем, а затем использовать кварцевый стержень для установки круглой кнопки. поэтому добавьте это в свой проект и импортируйте его в .m, и он должен работать. надеюсь, это сработает для вас, человек.

изменить кнопку, чтобы что-то похожее на изображение, которое показало, изменить рамку на:

btn.frame = CGRectMake(50.0, 100.0, 200.0, 50.0); 

и изменить радиус:

btn.layer.cornerRadius = 7; 

, что должен это делать.

+0

Есть ли способ сделать это похожим на [image] (http: //i.stack.imgur.com/uvNqn.png)? – Balz

+0

Вы можете играть с размером углового радиуса. Уменьшите его, пока не получите желаемый эффект. Все возможно с кварцевым сердечником. Просто поиграйте с ним и сделайте что-то, что вам нравится, из кода, который я написал. –

0

вот как я должен это сделать:

скачать кнопки изображение из Интернета или создать изображение самостоятельно, чтобы заставить это выглядеть, как вы хотите, чтобы выглядеть. Photoshop может быть вашим лучшим выстрелом для этого. убедитесь, что у вас есть прозрачный фон и сохраните его как .png. , затем добавьте его в свой проект xcode. чтобы сделать кнопку:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [btn setBackgroundImage:[UIImage imageNamed:@"yourImage.png"] forState:UIControlStateNormal]; 
    [btn addTarget:self action:@selector(buttonAction) 
     forControlEvents:UIControlEventTouchDown]; 
    [btn setTitle:@"Use it!" forState:UIControlStateNormal]; 
    btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; 
    btn.titleLabel.font = [UIFont systemFontOfSize:20]; 
    btn.frame = CGRectMake(position and size of your button); 
    [self.view addSubview:btn]; 

yourImage.png нужно заменить именем вашего изображения.

buttonAction - это действие, которое ваша кнопка выполняет, когда она постукивается. если вы только что добавили:

- (void) buttonAction 
{ 

} 

В любом месте вашего файла все, что вы добавили между этими скобками, будет выполнено.

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

Если у вас есть какие-либо вопросы, не стесняйтесь спросить их.

Надеюсь, это помогло вам

Смежные вопросы