iPad編程

来源:http://www.cnblogs.com/ljcgood66/archive/2016/06/07/5565737.html
-Advertisement-
Play Games

1. iPad 現有型號: iPad Pro, iPad Air, iPad mini 均配備Retina顯示屏。早期還有iPad 依次對應的坐標系及解析度: iPad Pro 坐標系:1366 x 1024 解析度:2732 x 2048 iPad Air 坐標系:1024 x 768 解析度:2 ...


1. iPad

   現有型號:

   iPad Pro, iPad Air, iPad mini 均配備Retina顯示屏。早期還有iPad

   依次對應的坐標系及解析度:

   iPad Pro 坐標系:1366 x 1024  解析度:2732 x 2048

   iPad Air  坐標系:1024 x 768    解析度:2048 x 1536

   iPad mini  坐標系:1024 x 768    解析度:2048 x 1536

 

   開發過程中圖片可只設計2048 x 1536 解析度下的。根據實際情況,也可選擇1024x1536解析度。

2. iPad 與iPhone編程的區別

    > 屏幕尺寸/解析度不同

       iPhone:640x960,640x1136……

       iPad : 2048x1536 

     > UI元素的佈局

       iPad屏幕比iPhone大,可容納顯示更多的UI元素,兩者的排列方式略有不同.

       例如: 在iPhone中使用的UITabBarController分欄控制器,雖然在iPad下也可以使用,但一般情況下考慮到用戶體驗,不會使用在頁面下方顯示分欄菜單的方式,而是使用在左側顯示豎向的分欄菜單,實現這種效果需藉助與第三方庫(當然也可以自己封裝)。

       [擴展] 第三方庫實現豎向分欄控制器 FSVerticalTabBarController

                https://github.com/futuresimple/FSVerticalTabBarController

                此庫實現了一個類似iOS原生UITabBarController的分欄效果,只不過是豎向的。

       [*擴展*] 對於iPhone下的分欄控制器,若要顯示不規則尺寸的tabBarItem,則需要自定義實現,例如某個分欄的尺寸比其他的分欄都大,特別是中間的,凸出效果的。

                可參考:http://code4app.com/ios/自定義不規則TabBar/51886eee6803faf053000003

     > 鍵盤

        iPad的虛擬鍵盤右下角多了個退出鍵盤的按鈕

                     

     > iPad特有的類

        UIPopoverController 彈出控制器

        UISplitViewController 主從視圖控制器[自iOS8開始,此類也可以在iPhone應用中使用]

     > 部分共有API的差異

        同樣的類在iPhone和iPad上的顯示效果會略有不同,但大部分還是一致的。

     > 屏幕方向的支持

        在創建工程後,在info.plist中查看會發現iPhone下支持三種方向,而iPad下支持四種方向。

                       

     > 橫豎屏支持建議

        一般情況下iPhone應用支持一種屏幕方向即可,豎屏 or 橫屏。

        iPad應用最好支持橫屏,豎屏兩種方向,也是官方建議。但不強制,根據實際開發業務需求選擇。

     > 工程運行設備選擇

        在創建工程時,會有Device選擇有三個值:

         Universal  通用 iPhone iPad的都可運行

         iPhone     

         iPad

         若選擇iPhone,也仍然要考慮在iPad上運行是否正常。蘋果官方其中一條審核規則:在iPhone上運行的應用必須同樣也能在iPad上可運行正常。一般就選擇Universal。

         若應用只在iPad上運行,則選擇iPad.

      > 開發流程

         iPhone與iPad的開發流程是一致的,在 iPhone上所學的所有知識基本都可以應用在iPad上。 

       

3. UISplitViewController

  主-從(master-detail)容器視圖控制器。在此界面中,在主視圖控制器上的改變會驅動從視圖控制器的內容改變,這兩個視圖控制器是併列顯示的。常應用於iPad 應用中,一般作為window的根視圖控制器rootViewController。自iOS8開始,此類也可以在iPhone應用中使用

   純代碼方式實現:

   註意:在刪除Main.storyboard文件後,需要在info.plist中將 Main storyboard file base name 項刪除,否則程式崩潰報錯,提示找不到Main....

   > 初始化

      [[UISplitViewController alloc] init]

   > 設置主,從視圖控制器

      splitViewController.viewControllers = @[masterViewController,detailViewController];

      該屬性包含兩個視圖控制器,第一個是主視圖控制器,第二個是詳細/從視圖控制器

 > 設置顯示模式

   splitViewController.preferredDisplayMode 

      值如下:

      UISplitViewControllerDisplayModeAutomatic,       // 自動模式,自行根據設備尺寸決定合適的顯示方式,

       UISplitViewControllerDisplayModePrimaryHidden, // 主視圖控制器隱藏

       UISplitViewControllerDisplayModeAllVisible,         // 主,從視圖控制器併列顯示

       UISplitViewControllerDisplayModePrimaryOverlay // 主視圖控制器覆蓋在從視圖控制器上顯示

      獲取顯示模式

      splitViewController.displayMode    // 註意只能獲取到上述四值中的後三種

   > 設置主視圖控制器的顯示尺寸比例

      splitViewController.preferredPrimaryColumnWidthFraction // 註意此屬性的值範圍在0.0~1.0區間,如0.2 表示主視圖控制器在splitViewController中所占的顯示比例為20%。

      獲取主視圖控制器的顯示尺寸(點數)

      splitViewController.primaryColumnWidth 

   > 顯示指定的從視圖控制器,一般在主視圖控制器點擊後觸發

      [splitViewController showDetailViewController: sender:]

      其中參數一表示要顯示的從視圖控制器,參數二表示是哪個視圖或視圖控制器產生的此請求

   > 顯示指定的主視圖控制器

      [splitViewController showViewController: sender:]

      參數一表示要顯示的主視圖控制器,參數二表示由哪個對象請求顯示

   >  設置是否將一個隱藏的視圖控制器通過輕掃手勢顯示或隱藏

      splitViewController.presentsWithGesture

       註意只有在有隱藏視圖控制器時有效

4. UIPopoverController

    彈出控制器,以懸浮框的形式模態展現一個視圖控制器的內容。

    此類自iOS9被棄用,popover的效果通過視圖控制器模態跳轉方式實現,指定跳轉的視圖控制器的 modal presentation style 為 UIModalPresentationPopover, 且配合UIPopoverPresentationController的相關屬性設置。

    - iOS9之前popover實現:UIPopoverController的使用

    > 準備彈出視圖的控制器並初始化UIPopoverController

      [ [UIPopoverController alloc] initWithContentViewController: ]

    > 在指定的某一塊特定區域彈出顯示

      [popoverController presentPopoverFromRect: inView: permittedArrowDirections: animated: ];

       參數一: 指定的矩形框(箭頭所指)範圍,以參數二view的左上角為坐標原點

    參數二: 參數一的坐標原點的相對view

    參數三: 箭頭方向: 決定了彈出視圖的方向,若在指定方向上空間不夠,則會導致彈出視圖的尺寸無效

    參數四: 是否動畫顯示

        其中參數一,二的設置效果如下:

               

      若在使用了導航條的視圖中,要在導航條左側或右側按鈕點擊後顯示popover效果,則可使用以下方法:

      [popoverController presentPopoverFromBarButtonItem: permittedArrowDirections: animated: ]

     > 設置背景顏色(最好設置的與彈出內容背景顏色一致,預設的是白色)

        popoverController.backgroundColor

     > 設置彈出內容的尺寸

        [popoverController setPopoverContentSize: ];

        ***但一般不建議使用此方式設置彈出視圖的尺寸,其尺寸應該由內容視圖決定,應在彈出視圖的控制器中設置 preferredContentSize 屬性

     

     - iOS9 popover實現:

     > 準備彈出視圖的控制器,並設置其模態彈出方式

        contentVC.modalPresentationStyle = UIModalPresentationPopover; // 指定模態彈出窗的樣式

        [擴展補充] contentVC.modalTransitionStyle  // 模態視窗顯示時的動畫

     > 設置彈出視圖控制器的彈出屬性    

        // 箭頭所指區域的坐標原點的相對視圖

        contentVC.popoverPresentationController.sourceView = self.view;

        // 箭頭所指區域尺寸

        contentVC.popoverPresentationController.sourceRect = uv.frame;

        // 彈出視圖的背景色

        contentVC.popoverPresentationController.backgroundColor = [UIColor redColor];

        // 箭頭方向

        contentVC.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp;

        // 模態方式彈出視圖

        [self presentViewController:contentVC animated:YES completion:nil];

        

 

    

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在HTML頁面中插入Javascript的主要方法,就是使用<script>元素。這個元素由Netscape創造併在Netscape Navigator 2中首先實現。後來,這個元素就被加入到正式的HTML規範中。HTML4.01為<script>定義了6個屬性,包括defer和async。defe ...
  • 本篇主要簡單介紹了knockoutjs中各種綁定的使用方法,使用這些綁定方法的組合就能簡單地做好一個需要較多動態交互的UI頁面。使用這些方法比較重要的一點就是要記住綁定的都是函數對象,所以可以直接在HTML裡面進行操作,這樣的話有時候 js 代碼結構可以更簡單。 ...
  • iOS 直播 閃光燈的使用 應用場景是這樣的,最近公司決定做一款直播類的軟體. 在開發中就遇到了不曾使用過的硬體功能 閃光燈. 這篇博客將簡單介紹一下閃光燈的使用. ` ` ...
  • 1.第一個Fragment 2.第二個Fragment ...
  • iOS FFmpeg 優秀博客(資源)集錦 這篇博客沒有我自己寫的內容: 主要是對FFmpeg一些優秀博客的記錄 隨時更新 1 "iOS編譯FFmpeg,kxmovie實現視頻播放" 2 "視音頻編解碼技術零基礎學習方法" 3 "一個不依賴FFmpeg的播放器,支持RTMP" ...
  • 說到自定義控制項不得不提的就是介面回調,在Android開發中介面回調用的還是蠻多的。在這篇博客開始的時候呢,我想聊一下iOS的自定義控制項。在iOS中自定義控制項的思路是繼承自UIView, 在UIView的子類中組合一些控制項,對外暴漏一些屬性和回調介面,並留有必要的實現方法。在iOS自定義控制項中常用的 ...
  • 想在移動開發大餐中分一杯羹,體驗最火最炫的技術?小伙子,很有眼光嘛 毫無疑問,移動開發在目前和未來幾年內都會盛極一時。無數開發職位虛位以待。各大公司都在尋找各種層次的程式員——新手級、入門級、中級、老手、專家。 本文是寫給新手們的——我會幫你們找到第一份iOS開發工作。 “我幹嘛聽你的?”, 你可能 ...
  • 歸屬地數據源 http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx webxml網站還支持其他請求方式 如SOAP等等 界面比較簡單 <?xml version="1.0" encoding="utf-8"?> <LinearLa ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...