2016-01-24 52 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];