呈现 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()?

在 iPad 上将 UIView 作为矢量呈现为 PDF - 有时呈现为位图,有时呈现为矢量

如何拍摄未呈现的 UIView 的快照?

iOS 14 从 UIView 呈现 UIMenu

在 AVPlayerViewController 全屏视图上呈现 UIView