视图固定在底部Swift

时间:2018-09-08 14:02:12

标签: ios swift fixed

很抱歉,以前有人问过这个问题,但我没有找到相同的问题。 我有一个带有图像的视图,必须始终将其固定在我的iOS Swift应用程序的底部。 即使我转到另一个屏幕,它也必须位于底部,并且必须具有相同的视图,而不是针对不同屏幕的视图。 谢谢

3 个答案:

答案 0 :(得分:0)

使应用程序的根视图控制器成为通用的UIViewController。

将图像视图添加到根视图控制器的底部

将容器视图拖动到该视图控制器上。使容器视图向下延伸到图像视图的正上方。

现在在情节提要中创建一个新的视图控制器场景。如果需要导航堆栈,标签栏控制器或任何所需的类型,则可以是导航视图控制器。

按住Control键将其从根视图控制器上的容器视图拖动到新的视图控制器上。在出现的对话框中选择“嵌入”。现在,您已经创建了一个嵌入segue,并且您的根视图控制器包含一个子视图控制器。

现在,从子视图控制器进行所有导航。它将始终占据大部分屏幕,但不是全部屏幕,并且根视图控制器仍将可见,并且图像视图位于其底部。

答案 1 :(得分:0)

您可以在屏幕底部添加一个自定义UIWindow:

使用框架(起点和大小)实例化UIWindow,并将其rootViewController设置为包含UIImageView的UIViewController。要显示该窗口,请将isHidden设置为false。如果您不希望主窗口与自定义窗口重叠,则将主窗口的高度减小自定义窗口的高度。

您可以在AppDelegate的application(_:didFinishLaunchingWithOptions:)中完成所有这些操作。

以下是我与广告横幅一起使用的简单示例:

window?.frame.size.height -= adBannerHeight
adWindow = UIWindow(frame: CGRect(x: 0, y: UIScreen.main.bounds.height - adBannerHeight, width: UIScreen.main.bounds.width, height: adBannerHeight))
adWindow?.rootViewController = AdViewController()
adWindow?.isHidden = false

答案 2 :(得分:-2)

您可以使用图像创建自定义视图,以将每个屏幕加载为固定视图。

//CusomeView

import UIKit

class CustomeView: UIView {

var contentView: UIView!
override init(frame: CGRect) {
    super.init(frame: frame)

}
required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

}


}

现在,您可以将此自定义视图添加到要在底部区域显示的每个viewController中,检查以下代码以加载自定义视图。

您还可以创建用于加载自定义视图的通用方法。

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var cv: CustomeView!
override func viewDidLoad() {
    super.viewDidLoad()
    if let customView = Bundle.main.loadNibNamed("CustomeView", owner: self, options: nil)?.first as? CustomeView {
        self.view.addSubview(customView)
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

希望获得帮助