我正试图让UIView
从屏幕底部向上滑动。我创建了UIView
作为单独的nib文件。我最初将视图添加到屏幕的视口之外,然后设置y
值的动画以使其向上滑动。
self.bannerView = BannerView(frame: CGRect(x: 10, y: self.view.bounds.height, width: self.view.bounds.width - 10, height: 44))
self.collectionView?.addSubview(self.bannerView!)
UIView.animate(withDuration: 0.5) {
self.bannerView?.frame.origin.y = self.bannerView!.frame.origin.y - 64
}
然而它似乎不起作用。视图没有显示出来。但计算似乎是正确的。我无法弄清楚出了什么问题。
示例项目已上传here。
答案 0 :(得分:2)
您必须更改整个frame
而不是y
值 - 这不起作用。
如图所示 - 您可以参考https://youtu.be/2kwCfFG5fDA?list=PL0dzCUj1L5JGKdVUtA5xds1zcyzsz7HLj&t=993,其中确切地说您的问题已通过更改框架来证明其工作正常。上面的示例视频也位于Swift
中,因此符合您在问题中的需求。
答案 1 :(得分:0)
我没有验证你的数学但是尝试设置整个帧而不是更改指定帧的属性,因为那样不起作用。
var frame = self.bannerView!.frame
frame.origin.y = frame.origin.y - 64
self.bannerView?.frame = frame
答案 2 :(得分:0)
一线解决方案:
self.bannerView?.frame = self.bannerView!.frame.offsetBy(dx: 0, dy: -64)
(将其粘贴到动画块内)