选择按钮时,请填充色彩填充框

时间:2015-05-26 17:40:54

标签: ios objective-c uibutton

当选择UIButton时,如何让它选择全帧?这就是我的意思:

enter image description here

所以橙色是UIButtons框架,蓝色是它被选中的时候。如何让蓝色填满整个画面? (所以你不会看到橙色。)

更新

enter image description here

1 个答案:

答案 0 :(得分:2)

我假设橙色是UIButton superview ,并且 superview 是你想要应用色调颜色的颜色至。如果是这种情况,那么我会在按钮上添加一个目标,以更改超级视图backgroundColor以匹配按钮的tintColor。这样的事情应该有效:

[myButton addTarget:self
             action:@selector(setButtonSuperviewToTintColor:)
   forControlEvents:UIControlEventTouchUpInside];

然后在控制器的其他地方添加:

- (void)setButtonSuperviewToTintColor:(UIButton *)sender {
    sender.superview.backgroundColor = sender.tintColor;
}

如果超级视图您要调整的内容,则创建一种方法,将UIButton的背景颜色更改为其色调。< / p>

[myButton addTarget:self
             action:@selector(setButtonBackgroundColorToTintColor:)
   forControlEvents:UIControlEventTouchUpInside];

和其他地方:

- (void)setButtonBackgroundColorToTintColor:(UIButton *)sender {
    sender.backgroundColor = sender.tintColor;
}

但是,如果你只想让它成为selected颜色,那么就已经有了这种方法。不幸的是,它设计用于处理图像。但是,从图像中制作颜色很容易。所以,这应该适合你:

CGRect rect = CGRectMake(0, 0, 1, 1);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context,
                               [[UIColor blueColor] CGColor]);
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[myButton setBackgroundImage:img forState:UIControlStateSelected];