2

以前のバージョンの iOS ではすべて正常に動作しますが、iOS 7 では動作しません。UISlider のカスタム デザインを設定していないため、ビューには何も表示されず、ボリューム スライダー ビューは空です。他のすべては正常に動作します。

コード:

for (UISlider *slider in volumeSlider.subviews) {
        NSLog(@"Searching!");
        if ([slider isKindOfClass:[UISlider class]]) {
            NSLog(@"SLIDER FOUND!");
            [slider setThumbImage:[UIImage imageNamed:@"thumbSlider.png"] forState:UIControlStateNormal];
            [slider setMinimumTrackImage:[[UIImage imageNamed:@"sliderMax.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal ];
            [slider setMaximumTrackImage:[[UIImage imageNamed:@"sliderMin.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal ];
        }
    }
4

2 に答える 2

5

iOS7 がリリースされたため、NDA は適用されなくなりました。iOS6 より前のオペレーティング システムをサポートする必要がある場合は、このコードを使用できます。これは iOS7 でも動作します。注: iOS6 以降のみをサポートする必要がある場合は、これらのイメージを設定して MPVolumeView の外観をカスタマイズするための直接的な API が Apple から提供されています。 :(UIControlState)、および setMaximumVolumeSliderImage:(UIImage *) forState:(UIControlState)。

// replace the standard look and feel for the MPVolumeSlider with custom images
// note: on iOS7 it is necessary to set the thumb image last or the thumb will be drawn under the slider (not pretty), on iOS6 the order didn't seem to matter.
UIView *a = nil;
for (UIView *view in [self.volumeView subviews]) {
    if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) {
        a=view;
        UIImage *volumeBackgroundImage = [[UIImage imageNamed:@"volume_background"] resizableImageWithCapInsets:UIEdgeInsetsMake(9, 5, 7, 5)];
        [(UISlider *)a setMinimumTrackImage:[[UIImage imageNamed:[[ApplicationType sharedInstance] imageForAppType:@"volume_progress"]] resizableImageWithCapInsets:UIEdgeInsetsMake(9, 5, 7, 5)]  forState:UIControlStateNormal];
        [(UISlider *)a setMaximumTrackImage:volumeBackgroundImage forState:UIControlStateNormal];
        [(UISlider *)a setThumbImage:[UIImage imageNamed:@"volume_handle"] forState:UIControlStateNormal];
    }
}
于 2013-09-19T19:56:50.797 に答える