UISegmentedControl setImage: Bug in iOS7

后端 未结 4 1755
死守一世寂寞
死守一世寂寞 2020-12-08 03:03

I have a UISegmentedControl in my app. As of iOS7 GM, the images I use are not showing up when run on iOS7 devices. Anyone else having this problem?

Here\'s what it

4条回答
  •  攒了一身酷
    2020-12-08 03:32

    Woohoo! Here's the workaround:

    //Add clear color to mask any bits of a selection state that the object might show around the images
    self.theSegmentedControl.tintColor = [UIColor clearColor];
    
    UIImage *onceActive;
    UIImage *recurringActive;
    UIImage *scheduledActive;
    UIImage *separator;
    
    //Setting imageWithRenderingMode: to imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal for iOS7 is key
    if ([UIImage instancesRespondToSelector:@selector(imageWithRenderingMode:)]) {
        onceActive = [[UIImage imageNamed:@"btn_onceActive"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        recurringActive = [[UIImage imageNamed:@"btn_recurringInactive"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        scheduledActive = [[UIImage imageNamed:@"btn_scheduledInactive"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        separator = [[UIImage imageNamed:@"separator"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    
    }
    else {
        onceActive = [UIImage imageNamed:@"btn_onceActive"];
        recurringActive = [UIImage imageNamed:@"btn_recurringInactive"];
        scheduledActive = [UIImage imageNamed:@"btn_scheduledInactive"];
        separator = [UIImage imageNamed:@"separator"];
    }
    
    
    [self.theSegmentedControl setImage:onceActive forSegmentAtIndex:0];
    [self.theSegmentedControl setImage:recurringActive forSegmentAtIndex:1];
    [self.theSegmentedControl setImage:scheduledActive forSegmentAtIndex:2];
    [self.theSegmentedControl setDividerImage:separator forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    

提交回复
热议问题