objective c UISlider带有视觉跟踪弹出视图。弹出隐藏在其他视图元素后面

时间:2014-06-17 19:51:41

标签: objective-c uislider

我一直关注(成功)以下教程,介绍如何构建一个绘制视觉跟踪弹出视图的UISlider子类。

http://blog.neuwert-media.com/2011/04/customized-uislider-with-visual-value-tracking/

我的最后一个问题是弹出视图被其他视图imageView元素隐藏。我一直在寻找某种显示顺序或偏好设置,但没有运气,坚持在图像上方显示我的弹出视图。

3 个答案:

答案 0 :(得分:0)

尝试使用此SO Answer

[parentView bringSubviewToFront:[[parentView subviews] objectAtIndex:0]];
// or
[parentView bringSubviewToFront:popupView];

答案 1 :(得分:0)

我建议将popover作为子视图添加到应用程序的keyWindow中,以便它超越一切。这可能是用户的预期行为。类似的东西:

- (void)setPopoverVisible:(BOOL)visible {
    if (visible) {
        [self.popover removeFromSuperview];
        UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
        [keyWindow addSubview:self.popover];
    }
    [UIView animateWithDuration:0.15
                          delay:0
                        options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         self.popover.alpha = (visible ? 1 : 0);
                     }
                     completion:^(BOOL finished) {
                         if (!visible) {
                             [self.popover removeFromSuperview];
                         }
                     }];
}

记住定位弹出框以将矩形或点(无论你用什么来定位滑块)转换为keyWindow的边界。例如:

- (void)positionPopover {
    // Calculate newPopoverCenter in self.bounds
    UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
    self.popover.center = [self convertPoint:newPopoverCenter toView:keyWindow];
}

答案 2 :(得分:0)

可以在这里找到更现代的方法:https://github.com/alskipp/ASValueTrackingSlider。也许它会解决你遇到的问题。