在Swift(iOS)中隐藏元素并占用其空间

时间:2019-06-03 13:42:39

标签: ios swift autolayout

我是iOS开发的新手,对我来说最困难的事情之一是所有“自动布局”内容。我正在尝试创建一个简单的应用程序,该应用程序显示一条消息,说明用户正在运行该应用程序的iOS版本尚未经过测试,因此可能会发生错误或意外情况,因为它是越狱应用程序。

simple message I'd like to hide

警告是一个简单的UIView,带有两个标签和一个按钮,其宽度和高度与UIView相同。 该警告占用了我想用于其他用途的空间,因此当用户点击该警告时,该警告就会隐藏。

我使用self.unstableWarning.isHidden = true,但是,正如预期的那样,它仅隐藏UIView。

在警告下方,我有一个UIScrollView,我想占用警告使用的空间,因此当警告隐藏时,我希望UIScrollView移动,以便剩下空白。

以下是我的一些应用代码:

@IBOutlet weak var unstableWarning: UIView!
@IBAction func errMessageButton(_ sender: UIButton) {
        let alert = UIAlertController(title: "Unstable build or iOS version", message: "This version of Thunderbolt (" + projectVersion + ") hasn't been tested on your platform/iOS version (" + UIDevice.current.systemVersion + "), or very little tested, so expect bugs or unexpected things to occur. Thanks for using Thunderbolt ;)", preferredStyle: .alert)

        alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { action in
            self.unstableWarning.fadeOut()
            self.unstableWarning.isHidden = true
        }))

        self.present(alert, animated: true)
    }

如何在Swift中实现这一目标?

预先感谢

1 个答案:

答案 0 :(得分:2)

有多种方法可以做到这一点。我会列举我的想法:

  1. 使用stackView,尽管如此,您可能需要为警告视图设置恒定的高度。在此垂直stackView中,添加警告视图和scrollView。如果警告视图被隐藏,则scrollView将自动获取整个stackView。

  2. 在隐藏警告视图后操纵scrollView顶部约束。

  3. 将scrollView的顶部添加到警告视图的底部,并将警告视图的alpha设置为val lines = Source .fromResource("doc-topics-new.txt") .getLines .toList .drop(1) match { case Nil => List.empty case x :: xs => x.split(" ").drop(2).mkString(" ") :: xs } ,然后根据所需位置将其移动到上方。