【问题标题】:Better method to make pop up view制作弹出视图的更好方法
【发布时间】:2017-08-28 10:01:22
【问题描述】:

假设我们想在屏幕上显示一些popup 视图。当用户单击按钮时,我们的视图会弹出。在popup 视图中,我们有Close 按钮可以隐藏/删除视图本身。

我应该使用哪种方法来做那种事情:

1.) 单击按钮后,将popup 视图添加到我的主视图。 Close 按钮从超级视图中移除弹出视图。

2.) 使用alpha = 0 制作popup 视图,然后单击按钮更改alpha = 1Close 按钮更改 alpha to 0

当我通过多次单击按钮添加和删除view 时,我注意到应用程序开始变慢。 如果您知道做这类事情的好解决方案/方法(在另一个视图中显示视图/视图),那将非常有用。

【问题讨论】:

  • 听起来您正在尝试重新发明轮子。您是否尝试过使用标准 UIViewController 机制来显示/删除弹出视图?
  • 我只想显示一个包含 3-4 个标签的视图,除了 Close 按钮之外没有任何逻辑或操作。我真的需要使用 UIViewController 并且有一个视图而不是仅仅制作简单的 UIView 吗?
  • @Billy 在这种情况下,我会选择 alpha,因为它是一个动画属性。但是如果你打算在不同的地方使用它最好创建一个视图或视图控制器
  • @IvanAndrosenko 好的,感谢您的回答。

标签: ios swift uiview alpha subview


【解决方案1】:

实际上 UIKit 将非常低的 alpha 元素视为隐藏的,但隐藏的元素仍然参与与视图层次结构相关的自动调整大小和其他布局操作。为了节省您的性能,我建议在显示/隐藏您的视图时使用addSubview/removeFromSuperview 方法。

您还可以将 ViewControllers 与标准动画一起使用,例如:

    let presentedVC: ViewController = self.storyboard?.instantiateViewControllerWithIdentifier("presentedVC") as ViewController
    presentedVC.modalPresentationStyle = .OverCurrentContext
    presentedVC.view.backgroundColor = UIColor.clearColor()
    self.presentViewController(presentedVC, animated: true, completion: nil)

当你在你所呈现的VC中点击关闭时:

self.dismiss(animated: true, completion: nil)

【讨论】:

  • 我想添加到我的主要view 上的所有其他view 是否应该有自己的UIViewController
  • @Billy 好吧,没有一个确切的答案,你应该根据你使用这个视图的频率、它有多少逻辑以及你想要多快完成屏幕来找到一个折衷方案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多