UIStepper自定义结果为蓝色矩形

时间:2016-01-24 09:17:46

标签: ios objective-c uistepper

我一直在尝试自定义通过Interface Builder添加的 UIStepper 对象的外观。在参考主题here和其他主题时,我为viewDidLoad添加了几行代码。

- (void)viewDidLoad {
    [[UIStepper appearance] setIncrementImage:[UIImage imageNamed:@"stepperupImage.tif"] forState:UIControlStateNormal];
    [[UIStepper appearance] setDecrementImage:[UIImage imageNamed:@"stepperdownImage.tif"] forState:UIControlStateNormal];
}

结果是死亡的蓝色矩形,如下所示。 UIStepper没有像UIButtonTypeCustom这样的UIButton属性。有人知道如何解决这个问题吗?我的部署目标是iOS 8.0。

感谢。

enter image description here

2 个答案:

答案 0 :(得分:2)

要渲染原本不具有透明度的图像,请执行以下操作:

  • 将“渲染为”设置更改为“原始图像”(仅限.xcasset文件)
    Under the slider tab, in the Image Set box

- 或 -

  • 更改代码(docs)中的呈现模式:

    UIImage *image;
    image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    

在您的情况下,代码如下所示:

[[UIStepper appearance] setIncrementImage:[[UIImage imageNamed:@"stepperupImage.tif"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
[[UIStepper appearance] setDecrementImage:[[UIImage imageNamed:@"stepperdownImage.tif"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];

答案 1 :(得分:0)

UIImage *incrementImageFromFile = [UIImage imageNamed:@"plus.png"];
UIImage *incrementImage = [incrementImageFromFile imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

UIImage *decrementImageFromFile = [UIImage imageNamed:@"minus.png"];
UIImage *decrementImage = [decrementImageFromFile imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];



// For Normal state
[stepper setIncrementImage:incrementImage forState:UIControlStateNormal];
[stepper setDecrementImage:decrementImage forState:UIControlStateNormal];

// For Highlighted state
[stepper setIncrementImage:incrementImage forState:UIControlStateHighlighted];
[stepper setDecrementImage:decrementImage forState:UIControlStateHighlighted];