2016-01-24 38 views
0

我一直在尝试自定义通过Interface Builder添加的对象UIStepper的外观。关于主题here和其他人,我已经添加了几行代码到viewDidLoad。蓝色矩形UIStepper自定义结果

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

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

谢谢。

enter image description here

+0

是你的图像完全不透明,还是他们有透明度? –

+0

是和否我是否在Tiff文件中打包PNG图像或JPEG图像没有任何区别。 –

+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]; 
+0

是的,就是这样。谢谢。 –

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];