的TextView帧可见,但动画斯威夫特3

问题描述:

注后没有可点击:我用1盒(iCarousel的TextView帧可见,但动画斯威夫特3

注二:项目文件https://ufile.io/vgopt < - 我有问题,与GitHub的,所以我不得不存储在项目文件uploadfiles.io

我有显示基本数据的小型卡。点击“开始”后卡扩展并显示更多数据: compact card/expanded card

为了实现这个动画,我预先以编程方式(在sculptureCard.swift中)创建了我的所有约束。我为每个约束分配不同的优先级值,然后在我的ViewController的“changeLayout”方法中,我将优先级从998交换到1,反之亦然。

问题是这个新数据很长,我需要能够向下滚动才能看到这一切。最初,我正在使用(并希望使用)scrollView。我决定使用textView来代替,以尽可能简单。但是,只有HALF我的textView响应我的手势。 enter image description here

我认为我的textView只在最初受到限制的区域内工作;紧凑型卡片视图(textView最初也是高度为0)。但是我需要让这个textView在其表面上识别手势,而不仅仅是一半。 我的按钮出现类似的难题。动画发生后,只有一半的按钮可以再次点击。我相信影响我的textView的相同问题正在影响我的按钮。也许我对我的观点进行动画化的方式是不正确的。 enter image description here

此外,但仍然相关的问题是不得不通过将它们的“y”位置调整为-125来增加卡的尺寸。我相信这不是修改视图框架的正确方法。 x:0 y:0应该将我的卡移动到其包含视图的传送带的顶部,但它不会。因此我必须使用-125。 enter image description here

所有的动画都发生在ViewController的方法“changeLayout”中(很长,所以没有图片)。所有的约束都是在我的自定义类“雕塑卡”中创建的。

我旋转木马容器约束被改变后,我的动画我的意见,我已经用完成块链接我的动画。我称之为“view.layoutIfNeeded()”所有必要的时间(我认为)才能完成这项工作。我试过在不同情况下调用该方法。我尝试了其他方法,比如“layoutMargins”和“layoutSubViews”,以及其他几乎所有我能想到的方法。

我想我知道问题是什么(框架没有在我的意见更新,即使视图正确显示),但我找不到解决这个问题。

尝试yourView.isUserIntercationEnabled = true并在动画之后为您的视图重建约束。动画之后出现的部分因为旧约束而未被视为您的视图。

+0

它不起作用,但感谢您的想法。在将所有其他相关约束设置为优先级1之后,我在第二个动画块中创建了新的约束条件。我甚至将底部锚点设置在扩展卡本身之外并附加到superview.bottomAnchor,但这也不起作用。谢谢你的想法 – otto