ios - 动态调整弹出窗口大小时防止动画

标签 ios ipad uipopovercontroller

所以我自己意识到了这一点,并找到了这个答案来确认:

Prevent contentSizeForViewInPopover from animating

基本上我处于类似的情况,我想动态调整弹出窗口的大小,具体取决于我需要显示的数据量。我还得到了弹出 View 移动到位的动画 Action 。问题是,我无法在调用者/父级中设置弹出窗口的内容大小,因为在调用 viewDidAppear 或 viewDidLayoutSubviews 之前, TextView 的内容 View 的大小和弹出窗口中 TextView 的框架都是未知的,但当然此时已经太晚了,弹出窗口已经开始可见,因此我得到了这个不需要的动画。

我在弹出 View Controller 类中动态设置 TextView 的大小,以适应 TextView 显示的数据量,并且这只在定义/已知/但您想要的框架大小的情况下有效当 View 生命周期中还没有到达那个点时就说出来。

我应该提到我有我的 View Controller 并在 Storyboard中查看所有完成的内容。

这有道理吗?希望我能很好地解释它。非常感谢任何帮助或建议。

编辑这是我在弹出窗口中加载的 View Controller 中的 viewDidLayoutSubviews 方法 - 希望这能让它变得清晰。第一次加载时,如果我不在 viewDidLayoutSubviews 或 viewDidAppear 中执行此操作,我的 2 个 TextView 的框架是 CGRectZero, TextView 不会正确调整内容大小,并且弹出窗口大小也不正确:

- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];

self.physicianDataNewValueTextView.text = self.physicianDataNewValue;
CGRect frame = self.physicianDataNewValueTextView.frame;
frame.size.height = self.physicianDataNewValueTextView.contentSize.height;
self.physicianDataNewValueTextView.frame = frame;

self.physicianDataOldValueTextView.text = self.physicianDataOldValue;
frame = self.physicianDataOldValueTextView.frame;
frame.size.height = self.physicianDataOldValueTextView.contentSize.height;
self.physicianDataOldValueTextView.frame = frame;

self.contentSizeForViewInPopover = CGSizeMake(384.0f, self.physicianDataOldValueTextView.frame.size.height + 75.0f);
}

最佳答案

所以我决定使用委托(delegate)。我没有重置弹出窗口的 View Controller 中的内容大小,而是使用新的大小调用我的委托(delegate)(即包含 View Controller ),以便我可以将其动画属性设置为“否”。效果很好。

关于ios - 动态调整弹出窗口大小时防止动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16470699/

相关文章:

ipad - 有什么方法可以从 UITableView 索引中呈现 UIPopover 吗?

ios - 如何停止在iOS上跟踪in_app_purchase Firebase事件?

objective-c - UITableView 数据源问题。当 UITableView :cellForRowAtIndexPath: is called 时,我的数据数组突然为空

ios - 在 iPad 上以横向启动后 iphone 应用程序没有响应

ios - Objective-C:为什么在使用参数调用 objc_msgSend 时会出现 EXC_BAD_ACCESS 异常?

ios - 如何实现新的 iPad Pro 键盘快捷键功能?

ios - 标记帖子时从 firebase 中删除一个 child

ios - 通过电子邮件发送照片库中的图片

iOS Popover 或 ActionSheet 导致 UISegmentedControl 按钮变灰

ipad - 在打开时按下 BarButtonItem 时关闭 iPad UIPopoverController