很抱歉,以前有人问过这个问题,但我没有找到相同的问题。 我有一个带有图像的视图,必须始终将其固定在我的iOS Swift应用程序的底部。 即使我转到另一个屏幕,它也必须位于底部,并且必须具有相同的视图,而不是针对不同屏幕的视图。 谢谢
答案 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.
}
}
希望获得帮助