Ios 使用UIS外观渲染图像

Ios 使用UIS外观渲染图像,ios,objective-c,cocoa-touch,uislider,uiappearance,Ios,Objective C,Cocoa Touch,Uislider,Uiappearance,渲染具有自定义UI外观集的滑块的viewcontroller的图像时遇到问题。图像渲染良好,但是,图像中的滑块只有默认外观。如果转到该viewcontroller(vc2),uiappearance将设置为自定义外观。您知道如何使用自定义滑块外观渲染图像吗 我在第一个视图控制器上有一个UIImageView。在第二个视图控制器上,我有一个滑块 ViewController.m AppDelegate.m 多亏了@PartiallyFinite direction,我发现我需要在ViewContr

渲染具有自定义UI外观集的滑块的viewcontroller的图像时遇到问题。图像渲染良好,但是,图像中的滑块只有默认外观。如果转到该viewcontroller(vc2),uiappearance将设置为自定义外观。您知道如何使用自定义滑块外观渲染图像吗

我在第一个视图控制器上有一个UIImageView。在第二个视图控制器上,我有一个滑块

ViewController.m AppDelegate.m
多亏了@PartiallyFinite direction,我发现我需要在ViewController内部执行以下操作:

UIImage *minImage = [UIImage imageNamed:@"slider_minimum.png"];
UIImage *maxImage = [UIImage imageNamed:@"slider_maximum.png"];
UIImage *tumbImage= [UIImage imageNamed:@"slider_thumb.png"];

minImage = [minImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, 3, 0, 0)];
maxImage = [maxImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 13)];

[_slider setMinimumTrackImage:minImage forState:UIControlStateNormal];
[_slider setMaximumTrackImage:maxImage forState:UIControlStateNormal];
[_slider setThumbImage:tumbImage forState:UIControlStateNormal];

这可能与您在获取视图控制器的图像之前没有显示视图控制器的视图有关。尝试按下它并拍摄图像,然后立即取消。@PartiallyFinite:即使我将其更改为[self.view.layer renderContext:UIGraphicsGetCurrentContext()];和第一个viewcontroller的滑块,它仍然执行默认滑块。奇怪吧?根据,
UIAppearance
自定义仅在视图上调用
layoutSubviews
之前应用,因此在获取快照时可能尚未应用它们。
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary      *)launchOptions
    {
    [self customizeAppearance];
    // Override point for customization after application launch.
    return YES;
    }
    - (void) customizeAppearance; {
    UIImage *minImage = [[UIImage imageNamed:@"slider_minimum.png"]
                         resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 0)];
    UIImage *maxImage = [[UIImage imageNamed:@"slider_maximum.png"]
                         resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 13)];
    UIImage *thumbImage = [UIImage imageNamed:@"slider_thumb.png"];

    [[UISlider appearance] setMaximumTrackImage:maxImage
                                       forState:UIControlStateNormal];
    [[UISlider appearance] setMinimumTrackImage:minImage
                                       forState:UIControlStateNormal];
    [[UISlider appearance] setThumbImage:thumbImage
                                forState:UIControlStateNormal];
    [[UISlider appearance] setThumbImage:thumbImage
                                forState:UIControlStateHighlighted];

    }
UIImage *minImage = [UIImage imageNamed:@"slider_minimum.png"];
UIImage *maxImage = [UIImage imageNamed:@"slider_maximum.png"];
UIImage *tumbImage= [UIImage imageNamed:@"slider_thumb.png"];

minImage = [minImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, 3, 0, 0)];
maxImage = [maxImage resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 13)];

[_slider setMinimumTrackImage:minImage forState:UIControlStateNormal];
[_slider setMaximumTrackImage:maxImage forState:UIControlStateNormal];
[_slider setThumbImage:tumbImage forState:UIControlStateNormal];