日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CocoaTouch框架与构建应用界面

發(fā)布時間:2023/12/16 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CocoaTouch框架与构建应用界面 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

CocoaTouch框架與構(gòu)建應(yīng)用界面

? 蘋果應(yīng)用程序的界面幾乎都是由Cocoa和Cocoa Touch框架中的類和協(xié)議等元素構(gòu)建的,這些元素通過MVC(Model-View-Controller)模式有效地組織起來。

? macOS應(yīng)用的界面主要使用Cocoa框架開發(fā),Cocoa是一種為應(yīng)用程序提供豐富用戶體驗的框架,其核心是:Foundation和UIKit(AppKit)框架。**iOS應(yīng)用界面主要使用Cocoa Touch框架開發(fā),核心是Foundation和UIKit框架。**Cocoa Touch框架有一套自己的MVC模式,其中視圖和控制器是UIKit中的UIView(及其子類)和UIViewController(及其子類)。

1.視圖控制器

1.1 種類

  • UIViewController——用于自定義視圖控制器的導(dǎo)航。
  • UINavigationController——導(dǎo)航控制器,與UITableViewController結(jié)合使用,能夠構(gòu)建樹形導(dǎo)航模式。
  • UITabBarController——標簽欄控制器,用于構(gòu)建樹形標簽導(dǎo)航模式。
  • UIPageViewController——呈現(xiàn)電子書導(dǎo)航風格的控制器。
  • UISplitViewController——可以把屏幕分割成幾塊的視圖控制器,主要為iPad屏幕設(shè)計。
  • UIPopoverController——呈現(xiàn)“氣泡”風格視圖的控制器,主要為iPad屏幕設(shè)計。

1.2 生命周期

2.視圖

在Cocoa Touch框架中,提供了視圖的“根”類——UIView

2.1 UIView繼承層次結(jié)構(gòu)

  • 特殊的視圖:UIControll類——該類是控件類,其子類有UIButton、UITextField、和UISlider .之所以稱他們?yōu)?#34;控件類",是因為他們都有能力響應(yīng)一些高級事件.

2.2視圖分類

  • 控件:繼承自UIControll類,能夠響應(yīng)一些高級事件.
  • 窗口:它是UIWindow對象.一個iOS應(yīng)用只有一個UIWindow對象.它是所有子視圖的"根"容器.
  • 容器視圖:包括了UIScrollView,UIToolBar以及它們的子類.
  • 顯示視圖:用于顯示信息,包括UIImageView,UILabel,UIProgressView和UIActivityIndicatorView等.
  • 文本和Web視圖:提供了能夠顯示多行文本的視圖,包括UITextView和UIWebView,其中UITextView也屬于容器視圖,UIWebView是能夠加載和顯示HTML代碼的視圖.
  • 導(dǎo)航視圖:為用戶提供從一個屏幕到另外一個屏幕的導(dǎo)航(或者跳轉(zhuǎn))視圖,它包括UITabBar和UINavigationBar.
  • 警告框和操作表:用于給用戶提供一種反饋或者與用戶進行交互.

3.純代碼構(gòu)建頁面?(網(wǎng)絡(luò)轉(zhuǎn)載)

純代碼的條件

刪除Main Interface中的Main,同時需要刪除info.plist中的如下代碼

<key>UISceneStoryboardFile</key> <string>Main</string>

項目文件變化

  • AppDelegate.swift文件負責App的啟動與終止,并負責與SceneDelegate交接。
  • SceneDelegate.swift文件負責管理應(yīng)用程序的生命周期。

保留SceneDelegate

  • AppDelegate中通過application(_:configurationForConnecting:options)返回一個UISceneConfiguration實例
  • 完成啟動后,控制權(quán)被交接給 SceneDelegate,它的 scene(_:willConnectTo:options:)將會被調(diào)用,設(shè)置window的根視圖控制器
  • func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {guard let windowScene = (scene as? UIWindowScene) else { return }//創(chuàng)建windowself.window = UIWindow(windowScene: windowScene)//設(shè)置window的rootViewControllerself.window?.rootViewController = ViewController()self.window?.makeKeyAndVisible() }

    不保留SceneDelegate

  • 刪除SceneDelegate.swift

  • 刪除info.plist中的如下內(nèi)容

    刪除內(nèi)容.png

  • AppDelegate.swift中代碼寫成和Xcode11之前的樣子

  • var window: UIWindow?func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {//創(chuàng)建windowself.window = UIWindow(frame: UIScreen.main.bounds)//設(shè)置window的rootViewControllerself.window?.rootViewController = ViewController()self.window?.makeKeyAndVisible()return true }
  • 刪除 AppDelegate.swift中的如下代碼
  • func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {}func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UIScen

    鏈接:https://www.jianshu.com/p/cc901be44773

    4.HelloWorld示例

    class ViewController:UIViewController{override func viewDidLoad(){super.viewDidLoad()let screen = UIScreen.main.bounds //獲取屏幕的邊界,其返回值是CGFloat類型.CGFloat是描述視圖對象位置和大小的結(jié)構(gòu)體.let labelWidth:CGFloat = 90let labelHeight:CGFloat = 20let labelTopView:CGFloat = 150let frame = CGRect(x:(screen.size.width - labelWidth)/2,y:labelTopView,width:labelWidth,height:labelHeight)let label = UILabel(frame:frame)label.text = "HelloWorld"label.textAlignment = .centerself.view.addSubView(label) //最后,不要忘記通過addSubView:方法將它添加回父視圖中} }
    • frame和bounds屬性:
      • frame屬性表示該視圖在**父視圖坐標系統(tǒng)(相對于父視圖)**中的位置和大小.
      • bounds屬性表示該視圖在**本地坐標系統(tǒng)(相對于自己)**中的位置和大小.
      • frame屬性用得很多,bounds屬性用得比較少,這主要是因為bounds屬性的坐標系是本地坐標.

    總結(jié)

    以上是生活随笔為你收集整理的CocoaTouch框架与构建应用界面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。