Search code examples
iosobjective-cuistepper

UIStepper Customization Results in Blue Rectangles


I've been trying to customizing the looks of a UIStepper object added over Interface Builder. In reference to a topic here and others, I've added a few lines of code to viewDidLoad.

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

The result is the blue rectangles of death as shown below. UIStepper doesn't have a property like UIButtonTypeCustom for UIButton. Does anybody know how to fix this problem? My deployment target is iOS 8.0.

Thanks.

enter image description here


Solution

  • To render images that don’t have transparency as they originally were, either:

    • Change the “Render As” setting to “Original Image”(.xcasset files only):
      Under the slider tab, in the Image Set box

    — or —

    • Change the rendering mode in code (docs):

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

    In your case,the code would look like this:

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