当前位置:  开发笔记 > IOS > 正文

如何在iPhone上设置按钮背景颜色?

如何解决《如何在iPhone上设置按钮背景颜色?》经验,为你挑选了6个好方法。

如何设置按钮的自定义背景颜色?

Interface Builder似乎没有用于执行此操作的界面.

它只能以编程方式提供吗?如果是的话,你能提供一个例子吗?



1> Tim James..:

我读了你的问题,要求(像我一样)以编程方式设置按钮颜色.这是UIKit的一个明显的遗漏,我无法让无证的UIGlassButton工作.

我用一个段解决了这个问题UISegmentedControl,它允许你设置tintColor:

UISegmentedControl * btn = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:name]];
btn.momentary = YES;
btn.segmentedControlStyle = UISegmentedControlStyleBar;
btn.tintColor = color;
[btn addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged];

请注意,momentarysegmentedControlStyle属性确实很重要,并且可以使用图像而不是NSString *名称.

如果您可以使用一组有限的固定图像,带有端盖的可伸缩图像可以正常工作,但这不符合要求!例如,

buttonImage   = [[UIImage imageNamed:@"button.png"] stretchableImageWithLeftCapWidth:26 topCapHeight:16];



2> Brad Larson..:

我发现我需要使用可伸缩的图像来实现这一目标.Apple的UICatalog示例有一个或多个以这种方式绘制的彩色按钮.您可以使用他们的模板图像并重新着色以满足您的按钮需求.

我不确定在Interface Builder中这样做,但我能够使用以下代码创建一个按钮并使用图像作为其内容:

downloadButton = [[UIButton alloc] initWithFrame:CGRectMake(36, 212, 247, 37)];

downloadButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
downloadButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

[downloadButton setTitle:NSLocalizedStringFromTable(@"Download", @"Localized", nil) forState:UIControlStateNormal]; 
[downloadButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[downloadButton setFont:[UIFont boldSystemFontOfSize:14.0]];

UIImage *newImage = [[UIImage imageNamed:@"greenButton.png"] stretchableImageWithLeftCapWidth:12.0f topCapHeight:0.0f];
[downloadButton setBackgroundImage:newImage forState:UIControlStateNormal];

[downloadButton addTarget:self action:@selector(downloadNewItem) forControlEvents:UIControlEventTouchDown];

downloadButton.backgroundColor = [UIColor clearColor];
[downloadDisplayView addSubview:downloadButton];



3> lostInTransi..:

为圆角矩形按钮设置视图的背景颜色不会更改按钮的背景颜色.尝试将按钮设置为自定义按钮(检查器中的第一个下拉菜单),然后设置背景颜色.你会得到想要的效果:)


您可以以编程方式设置`button.layer.cornerRadius`以获得一个圆角按钮(您需要启用`button.layer.masksToBounds`以及AFAIK).这对我来说是最简单的解决方案.

4> alex..:

看来,按钮颜色仍然是一个问题.以下类别通过采用UIColor参数的实例方法以编程方式完全设置按钮的backgroundimage.无需创建按钮backgroundimage文件.它保留基于UIControlState的按钮行为.它保持圆角.

头文件UIButton + ColoredBackground.h

#import 

@interface UIButton (ColoredBackground)

- (void)setBackgroundImageByColor:(UIColor *)backgroundColor forState:(UIControlState)state;

@end

以及UIButton + ColoredBackground.m的内容

#import "UIButton+ColoredBackground.h"
#import 

@implementation UIButton (ColoredBackground)

- (void)setBackgroundImageByColor:(UIColor *)backgroundColor forState:(UIControlState)state{

    // tcv - temporary colored view
    UIView *tcv = [[UIView alloc] initWithFrame:self.frame];
    [tcv setBackgroundColor:backgroundColor];

    // set up a graphics context of button's size
    CGSize gcSize = tcv.frame.size;
    UIGraphicsBeginImageContext(gcSize);
    // add tcv's layer to context
    [tcv.layer renderInContext:UIGraphicsGetCurrentContext()];
    // create background image now
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    // set image as button's background image for the given state
    [self setBackgroundImage:image forState:state];
    UIGraphicsEndImageContext();

    // ensure rounded button
    self.clipsToBounds = YES;
    self.layer.cornerRadius = 8.0;

    [tcv release];

}

@end

在每个UIButton实例上调用新方法,如:

[myButton setBackgroundImageByColor:[UIColor greenColor] forState:UIControlStateNormal];



5> S.P...:

http://github.com/dermdaly/ButtonMaker

您可以使用此应用程序生成UI按钮图像...并可以将其设置为按钮的背景图像



6> acreek..:

在按钮属性选项板中将按钮类型设置为"自定义".这将为您提供一个方形按钮,其中包含您为背景选择的任何颜色.

如果你想要一个看起来更像传统按钮但有不同颜色的按钮,你需要进入某种图像编辑软件并创建它(我使用photoshop进行自定义按钮).

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有