更改UIStepper的外观

时间:2012-01-06 18:18:50

标签: objective-c ios ios5

UIStepper非常方便,但我想改变它的外观,我需要有自定义图标而不是加号和减号,我也想改变控件的颜色。我怎样才能做到这一点?提前谢谢!

6 个答案:

答案 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))
        }
    }
}