繁体   English   中英

UIScrollView的子视图不响应以下滚动视图高度动画

[英]Subviews of UIScrollView not responding to touch following animation of Scroll View's height

我正在制作一个具有UIScrollView的应用程序,该UIScrollView可以扩展到280的高度,并在关闭时收缩到0的高度。 我使用滚动视图是因为常规视图不会在动画后将其子视图“隐藏”到0高度。 最初,在对Scroll View进行任何动画处理之前,子视图将按预期的方式响应触摸,但是在完全对视图的高度进行动画处理之后,所有子视图都将停止响应用户的触摸。 我已经尝试确保所有子视图的zPosition大于视图控制器中的任何其他视图,所以这不是问题。 似乎所有子视图的框架都在其父视图的框架之内。 以下是指向我的问题的视频的链接:

我的问题

这是按下我的“ parametersButton”时发生的代码:

@IBAction func parametersButtonPressed(_ sender: Any) {
    UIView.animate(withDuration: 0.25, animations: {

        if self.parametersExpanded {

            //Close searchView, make shadowView transparent
            self.searchView.frame.size.height = 0
            self.parametersButton.frame = self.parametersButton.frame.offsetBy(dx: 0, dy: -280)
            self.searchView.backgroundColor = UIColor.darkGray
            self.shadowView.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0)
        } else {

            //Expand the searchView, darken shadowView
            self.searchView.frame.size.height = 280
            self.parametersButton.frame = self.parametersButton.frame.offsetBy(dx: 0, dy: 280)
            self.searchView.backgroundColor = UIColor(red: 230/255, green: 230/255, blue: 230/255, alpha: 1)
            self.shadowView.layer.zPosition = 990
            self.shadowView.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.868)
        }
    }) { (bool) in
    }
}

请注意,在我的应用程序中,searchView最初是关闭的,即框架高度为0。对于本演示,我已经做到了这一点,以便当应用程序第一次加载时,视图被展开,因此我可以演示子视图在其superView的动画之前响应。 此外,还有一个shadowView,我可以使用它来使它后面的视图变暗,但是很明显,它位于searchView的后面,所以这不是问题。

根据OP评论...

可能的问题是由于显式更改了使用自动布局约束设置的视图元素的框架。 常见问题,并且可能导致各种奇怪的错误/情况。

将动画视图的折叠/展开方法更改为更改约束属性而不是显式的框架更改可以解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM