UIStepper非常方便,但我想改变它的外观,我需要有自定义图标而不是加号和减号,我也想改变控件的颜色。我怎样才能做到这一点?提前谢谢!
答案 0 :(得分:13)
从iOS 6.0开始,您可以使用- (UIImage *)decrementImageForState:(UIControlState)state
和- (UIImage *)incrementImageForState:(UIControlState)state
更改UIStepper控件上的标签。
这适用于iOS 6.0:
[_stepper setDecrementImage:[UIImage imageNamed:@"decrementIcon.png"] forState:UIControlStateNormal];
答案 1 :(得分:5)
这有效:
[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"highlighted.png"] forState:UIControlStateHighlighted];
[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"disabled.png"] forState:UIControlStateDisabled];
不确定未来的证据如何。
答案 2 :(得分:2)
你现在不能这样做。如果要自定义图标,则必须编写自定义UIControl
对象。
从UIStepper Class Reference开始,您可以更改的唯一参数是
continuous property
autorepeat property
wraps property
minimumValue property
maximumValue property
stepValue property
value property
您无法自定义图标。
但是,由于它是UIView
的子类,您可以尝试更改backgroundColor
。
答案 3 :(得分:2)
这是适用于我的解决方案。
平台iOS 7.1
[stepper setBackgroundImage:[UIImage new] forState:UIControlStateNormal];
[stepper setDividerImage:[UIImage new] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal];
结果只是递增,递减图像可见。
答案 4 :(得分:0)
您也可以随时浏览UIViews并猜测。无论如何,这是我的代码,它没有直接回答问题,但是有点整洁。
@implementation UIStepper (Util)
- (void) fixForIos7 {
if (!IS_IOS7)
return;
for (UIView *view in self.subviews) {
view.backgroundColor = [UIColor whiteColor];
UIButton *button = (UIButton*)view;
[button setTintColor:[UIColor blackColor]];
}
}
@end
答案 5 :(得分:0)
这是Swift 4.0版本:
stepper.setDecrementImage(UIImage(named: "yourDecrementImage.png"), for: UIControlState.normal)
stepper.setIncrementImage(UIImage(named: "yourIncrementImage.png"), for: UIControlState.normal)
我还发现缩小自定义图像以适应步进按钮会使它们模糊。这是我发现的唯一可以正确缩小图像而不会模糊的扩展功能:
extension UIImage {
func resize(targetSize: CGSize) -> UIImage {
return UIGraphicsImageRenderer(size:targetSize).image { _ in
self.draw(in: CGRect(origin: .zero, size: targetSize))
}
}
}