呈现 UIView 的最少代码
Posted
技术标签:
【中文标题】呈现 UIView 的最少代码【英文标题】:Barest minimum code to present a UIView 【发布时间】:2015-08-29 14:55:23 【问题描述】:创建一个创建 UIView 并将其显示在 ios 设备屏幕上的项目的绝对最少代码是多少?
没有故事板、模板或任何其他设计。只是 UIView 的最简单的展示。
我很欣赏这些模板可以让事情变得“更轻松”,但为了理解一切如何协同工作,我想尝试以最简单、真正基于代码的方式来构思框架及其与操作系统的关系表格。
即没有故事板及其所有流程。只是纯粹的代码。
我曾尝试使用 google 查找与以整体方式讨论 iOS 的人的内容,以便清晰地查看视图……但据我所知,这一切都是关于“轻松”而不是理解。
使用 Swift。
// 所有双关语都是非本意的刺激副产品。
编辑:::
我什至如何在没有视图控制器、情节提要等的情况下开始一个新项目?似乎只有基于故事板的模板,没有办法开始一个“空白”项目。
【问题讨论】:
【参考方案1】:最简单的就是这个,只需将它放在你的应用代理中,删除其他 .swift 文件,这应该是你需要的最简单的:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
var window: UIWindow?
var rootViewController: UINavigationController?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
rootViewController = UINavigationController(rootViewController: ViewController())
self.window!.rootViewController = rootViewController
self.window!.makeKeyAndVisible()
return true
这需要零情节提要,但是如果您想为所有这些添加一个 VIEW 并控制该 uiview,请执行以下操作:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
var window: UIWindow?
var rootViewController: UINavigationController?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var firstVC = UIViewController()
var firstVCView = UIView()
firstVCView.backgroundColor = UIColor.redColor()
firstVC.view = firstVCView
rootViewController = UINavigationController(rootViewController: firstVC) self.window!.rootViewController = rootViewController
self.window!.makeKeyAndVisible()
return true
我可以从一开始就告诉你,我会开始一个全新的项目并将其剥离:
方法如下:
选择单视图应用项目
进入 info.plist 文件,删除这两个条目:
然后,删除情节提要和笔尖。
保留“ViewController.swift”文件
把它放在你的 AppDelegate.swift 中:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
var window: UIWindow?
var rootViewController: UINavigationController?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
rootViewController = UINavigationController(rootViewController: ViewController())
self.window!.rootViewController = rootViewController
self.window!.makeKeyAndVisible()
return true
然后,这样做,点击“使用资产目录”按钮
点击您要使用资产目录的弹出框,然后确保该字段为空白,其中显示“启动屏幕文件”
编译并运行您的项目
【讨论】:
我现在正在尝试这个......我是个白痴。 Xcode 告诉我:UIViewController.new()) 应该是 UIViewController()) xcode 没有告诉我这个,我都测试过,我使用的是最新版本的 xcode,而不是新的 beta 版 好吧,我很困惑。所以就是这样;)而且我正在测试中。对不起。 UIWindow 继承自 UIView,因此您甚至不需要 UINavigationController 即可在屏幕上获取视图。但是,您会在控制台上收到一条警告,指出应用程序应该有一个根视图控制器。【参考方案2】:一个完全空的应用程序,带有一个应用程序委托,在didFinishLaunchingWithOptions
这将呈现一个视图:
self.window.rootViewController = [UIViewController new];
UIViewController
中有一个视图
【讨论】:
以上是关于呈现 UIView 的最少代码的主要内容,如果未能解决你的问题,请参考以下文章
iOS 如何从 Uiview 呈现 Modal ViewController
存在方式通知何时将呈现自定义 UIView 或 removeFromSuperview()?