所以我有一个我正在使用的 iOS7 应用程序,MPVolumeView
以便用户可以控制音量。我在此特定按钮上隐藏了路由按钮,MPVolumeView
并使用另一个MPVolumeView
禁用滑块的按钮作为我的 AirPlay 图标。
我的应用同时支持纵向和横向,音量滑块在这两种不同模式下的宽度不同。
如果视图首先在横向模式下初始化,那么MPVolumeView
它将正确调整自身大小。
但是,当视图在纵向模式下初始化然后我旋转到横向模式时,应用程序中的所有其他内容都会被调整大小/移动,除了MPVolumeView
唯一的被移动,并且它不会像它应该的那样变短。
我在 上使用自定义图像MPVolumeView
,如果我删除轨道的自定义图像,这个问题就会消失。
这是用于初始化的代码MPVolumeView
self.volumeView = [[MPVolumeView alloc] initWithFrame:CGRectZero];
self.volumeView.showsRouteButton = NO;
self.volumeView.layer.borderColor = [[UIColor redColor] CGColor];
self.volumeView.layer.borderWidth = 1.0f;
if (AT_LEAST_IOS7) {
// TODO: BUGBUG iOS7 doesn't redraw this MPVolumeView correctly when it's frame changes (i.e. we rotate to the portrait view).
// These images simply make the bar a little thicker than the standard thickness (to match the iOS7 music app) but it's not redrawing
// correctly so we are going to have to live with a slightly thinner bar.
[self.volumeView setMaximumVolumeSliderImage:[UIImage imageNamed:@"volume_bar_max"] forState:UIControlStateNormal];
[self.volumeView setMinimumVolumeSliderImage:[UIImage imageNamed:@"volume_bar_min"] forState:UIControlStateNormal];
[self.volumeView setVolumeThumbImage:[UIImage imageNamed:@"volume_scrubber"] forState:UIControlStateNormal];
}
[self addSubview:self.volumeView];
在 layoutSubviews 我正在重新定位/缩放它的框架:
self.volumeView.frame = CGRectIntegral(CGRectMake(controlsLeft + kEdgeToSliderSideWidth,
volumeTop,
controlsWidth - (2 * kEdgeToSliderSideWidth),
volumeSize.height));
这是视图以纵向模式开始时的样子:(总宽度为 640 像素)
当它旋转到横向时,它最终看起来像这样:(总宽度为 568 像素)
有人有什么想法吗?