在 iOS 8 中存在问题或功能。当 MPVolumeView 显示时,它正在被动画化,就像从 0 扩展到它的宽度一样。我该如何解决这种行为?在 iOS 7 上没有这样的问题。
问问题
1487 次
2 回答
2
消除此行为的一种可能方法是将 MPVolumeView 子类化并在[super layoutSubviews]
.
- (void)layoutSubviews
{
[super layoutSubviews];
[self cg_recursiveRemoveAnimationsOnView:self];
}
- (void)cg_recursiveRemoveAnimationsOnView:(UIView *)view
{
[view.layer removeAllAnimations];
for (UIView *subview in view.subviews) {
[self cg_recursiveRemoveAnimationsOnView:subview];
}
}
这将删除所有插入的动画。因此,请确保这是您想要的,因为这太过分了。也可以只删除position
和bounds
动画(请参阅 参考资料removeAnimationForKey:
)。
于 2015-04-10T13:11:26.073 回答
0
我确认这个问题在 iOS 8 中仍然存在。Anastasia 在上面的评论之一中提供的解决方法(覆盖volumeSliderRectForBounds)似乎有效,但只有在路由按钮不存在时才有效。当它存在时,滑块会与路线按钮重叠,并且不能再被按下。
我对她的解决方案进行了简单的修改,也许有人可以将其用作解决方法,直到 Apple 修复该解决方案或提供更好的解决方案。
- (CGRect)volumeSliderRectForBounds:(CGRect)bounds
{
if (self.showsRouteButton) {
NSInteger spacer = 10; /* Space between Route button and Volume slider */
CGRect routeButtonRect = [self routeButtonRectForBounds:bounds];
bounds.size.width -= (routeButtonRect.size.width + spacer);
}
return bounds;
}
我不喜欢硬编码间隔值,但我找不到如何动态计算它。
于 2015-02-03T11:48:20.057 回答