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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

01-Popover跳转

發布時間:2024/9/30 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 01-Popover跳转 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Popover跳轉

1.1-簡介

  • 什么是Popover?

    • UIViewController進行跳轉的時候,可以設置跳轉樣式
      • Popover樣式是iOS8加入的新特性

1.2-在StoryBoard中使用Popover

  • 1.創建目標控制器
  • 2.連線控制器,選擇present as popover
  • 3.設置popover大小

  • ViewController.swift
import UIKitclass ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view, typically from a nib.}override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()// Dispose of any resources that can be recreated.}//segue跳轉override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {//獲取目標控制器let desVC = segue.destinationViewController//獲取目標控制器的popover對象let popover = desVC.popoverPresentationController//適配iPhone iOS會根據設備類型選擇不同的Model展示效果,如果希望iPhone上面展示popover效果 則需要通過設置代理取消系統的自適應popover?.delegate = selfif segue.identifier == "function"{//設置popover的大小 當控制器為popover的目標控制器時,使用preferredContentSize可以設置popover的大小desVC.preferredContentSize = CGSizeMake(100, 100)}else if segue.identifier == "group"{//按照跳轉popover的交互控件分類,主要由兩種,一種是UIBarButtonItem,一種是非UIBarButtonItem,統稱為來源視圖,popover的參考點會默認設置在來源視圖的左上角//修改popover參考點的位置 默認是來源視圖的左上角 設置bounds為參考點時 則會將來源視圖的中心點設置為參考點popover?.sourceRect = (popover?.sourceView?.bounds)!}}}extension ViewController:UIPopoverPresentationControllerDelegate {//當設置Model展示的自適應效果時會調用func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {//不進行自適應return UIModalPresentationStyle.None}// //如果iPhone上面 不取消自適應 也可以手動給popover添加一個導航欄 按鈕來實現取消跳轉 // func presentationController(controller: UIPresentationController, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -> UIViewController? { // let nv = UINavigationController.init(rootViewController: controller.presentedViewController) // let btnDone = UIBarButtonItem(title: "Done", style: .Done, target: self, action: "dismiss:") // // nv.topViewController!.navigationItem.rightBarButtonItem = btnDone // // return nv // } // // func dismiss(btn:UIButton) // { // // print(btn.nextResponder()?.nextResponder()?.nextResponder()) // //該用法慎用~ 你懂得…… (逼格太高,一般人看不懂,不符合項目編碼規范) // //原理是 UIButton和UIViewController都是繼承于UIResponder 利用響應鏈通過UIButton找到其所在的UINavigationController // let nv = btn.nextResponder()?.nextResponder()?.nextResponder() as? UINavigationController // nv?.dismissViewControllerAnimated(true, completion: { () -> Void in // // }) // } }

1.3-總結

  • 當控制器model跳轉樣式為popover樣式時,可以通過目標控制器的popoverPresentationController獲取對應的UIPopoverPresentationController對象

  • popover樣式進行跳轉的時候,iPad樣式和iPhone樣式區別

    • iPad下默認是彈窗形式,且代碼無法更改
    • iPhone下默認是全屏顯示,并且不會自帶消失按鈕
      • 第一種解決方案:實現UIPopoverPresentationControllerDelegate,取消自適應
      • 第二種解決方案:實現UIPopoverPresentationControllerDelegate,采用UINavigationController替換原有Controller,手動添加消失按鈕
  • popover常用屬性有兩個,SourceView和SourceRect

    • SourceView:來源視圖,Storyboard跳轉默認的是連線的那一個視圖,代碼跳轉需要手動指定
    • SourceRect:目標參考點,根據來源視圖的種類分為兩種,UIBarButtonItem和非UIBarButtonItem。
      • 非UIBarButtonItem:默認在來源視圖的左上角,當使用來源視圖的bounds為參考點時,則會將來源視圖的中心點設置為參考點
      • UIBarButtonItem:系統自動適應,設置無效
  • popover箭頭方向可以通過設置permittedArrowDirections屬性更改

    • 默認為Unknow(系統自動判斷)

總結

以上是生活随笔為你收集整理的01-Popover跳转的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。