亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS ScrollView實現自動布局的方法(適用Swift 3.0 )

2019-10-21 18:42:50
字體:
來源:轉載
供稿:網友

前言

眾所周知我們大家在開發中,可能會有一些頁面顯示的元素很多,可能會超出一個屏幕,但也不適合用 TableView 或者 CollectionView,此時我們一般會用 ScrollView,那么就會出現自動布局的問題。下面話不多說了,來一起看看詳細的介紹吧。

實現方式

純代碼

  • 特點編碼繁瑣:需要手寫控件
  • 安全:只要正確地設置約束或者 frame、contentSize,一般不會出現滾動問題

示例

lazy var scrollView: UIScrollView = { let obj = UIScrollView(frame: CGRect(x: 0, y: 0, width: .screenW, height: self.screenH)) return obj}()override func viewDidLoad() { super.viewDidLoad() view.addSubview(scrollView) let subViewH: CGFloat = 400 let topView = UIView(frame: CGRect(x: 0, y: 0, width: enW, height: subViewH)) topView.backgroundColor = UIColor.red scrollView.addSubview(topView) let bottomView = UIView(frame: CGRect(x: 0, y: subViewH, h: screenW, height: subViewH)) bottomView.backgroundColor = UIColor.purple scrollView.addSubview(bottomView) scrollView.contentSize = CGSize(width: screenW, height: iewH * 2)}

效果圖

ios,scrollview布局,scrollview,自動布局

Storyboard + 內部View

特點

  • 搭建界面簡單
  • 直觀
  • 需要占位視圖

頁面結構如圖

ios,scrollview布局,scrollview,自動布局

可能出現的問題

  • ScrollView 中直接添加子元素,報錯:Has ambiguous scrollable content height
  • ScrollView 內容超出屏幕仍不能滾動

ios,scrollview布局,scrollview,自動布局

實現滾動的代碼

override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() let statusBarH: CGFloat = 20 // 如果沒有導航欄,就返回狀態欄的高度 let navH = gationController?.navigationBar.frame.maxY ?? statusBarH let deltaH = (screenH - navH) - bottomView.frame.maxY placeholderViewBottomConstraint.constant = deltaH}

效果圖

ios,scrollview布局,scrollview,自動布局

Storyboard + 外部View

特點

  • 搭建界面簡單
  • 直觀
  • 不需要占位視圖,不需要對 ScrollView 的布局做特殊處理
  • 需要處理外部視圖的 frame(如果沒有用戶交互,可以忽略)

頁面結構如圖

ios,scrollview布局,scrollview,自動布局

可能出現的問題

  • ScrollView 中直接添加子元素,報錯:Has ambiguous scrollable content height
  • 當內容超出屏幕高度時,必須得設置 ContainerView 的 frame,否則不能滾動或者超出屏幕部分不接受事件

ios,scrollview布局,scrollview,自動布局

實現滾動的代碼

override func viewDidLoad() { super.viewDidLoad() scrollView.addSubview(containerView)}override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() var f = containerView.frame f.size.width = screenW // 這句代碼很重要,處理超出屏幕無法響應事件問題 f.size.height = bottomView.frame.maxY containerView.frame = f scrollView.contentSize = CGSize(width: screenW, height: omView.frame.maxY)}

效果圖

ios,scrollview布局,scrollview,自動布局

總結

ScrollView 不能滾動的原因

  • contentSize 小于自身 frame 的尺寸
  • isScrollEnabled 屬性,不過它默認就是 true,默認無需設置
  • ScrollView 或者其父元素無法交互,此時我們需要檢查 isUserInteractionEnabled 屬性是否為 true

ScrollView 一直支持滾動

默認情況下,當 ScrollView 里的元素不足一個屏幕高度時,不能滾動,如需滾動(彈簧效果),需要設置 alwaysBounceVertical 屬性為 true(水平方向亦如此)

關于 ScrollView 布局的選擇

純代碼布局

如果是純代碼布局,只能用方式一。老老實實、一行一行代碼實現布局,雖然代碼繁雜,但是坑少。(現在仍有不少公司是這樣編程的)

界面布局

推薦方式三,這樣 ScrollView 和 其子元素分離,可以簡化很多約束問題,更直觀

以上代碼,適用于 Swift 3.0 語法。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产人妖伪娘一区91| 日韩亚洲综合在线| 亚洲人成网7777777国产| 欧美夫妻性视频| 欧美日韩国产色视频| 亚洲成人久久电影| 日产精品99久久久久久| 欧美裸身视频免费观看| 青青草精品毛片| 亚洲精品国产电影| 欧美成人精品在线观看| 日韩在线观看免费网站| 欧美激情奇米色| 国产精品自拍偷拍| 久久久久久久久久久免费| 国内精久久久久久久久久人| 亚洲成av人影院在线观看| 55夜色66夜色国产精品视频| 美日韩精品免费视频| 欧美日本高清一区| 亚洲精品一区中文| 欧美日本国产在线| 一区二区三区高清国产| 国产区亚洲区欧美区| 亚洲精品www| 日韩av免费一区| 久久噜噜噜精品国产亚洲综合| 91av视频在线播放| 欧美日韩国内自拍| 国产精品嫩草视频| 亚洲精品国产成人| 国产精品黄视频| 亚洲天天在线日亚洲洲精| 久久理论片午夜琪琪电影网| 欧美日韩成人在线观看| 日韩激情视频在线播放| 国产在线日韩在线| 亚洲毛片在线免费观看| 成人欧美在线观看| 亚洲天堂成人在线视频| 在线成人激情视频| 色多多国产成人永久免费网站| 欧美成人h版在线观看| 精品久久久91| 欧美二区在线播放| 欧美成人合集magnet| 成人免费网站在线| 国产日韩欧美黄色| 久久精品亚洲精品| 精品视频—区二区三区免费| 性色av一区二区三区在线观看| 97香蕉超级碰碰久久免费的优势| 欧美风情在线观看| 成人免费看片视频| 亚洲午夜精品久久久久久久久久久久| 欧美精品生活片| 国产欧美亚洲精品| 91视频-88av| 国产在线观看一区二区三区| 日韩亚洲国产中文字幕| 亚洲无亚洲人成网站77777| 亚洲综合中文字幕68页| 亚洲精品国产精品乱码不99按摩| 欧美另类在线播放| 欧美情侣性视频| 国产一区二区三区毛片| 亚洲韩国欧洲国产日产av| 国产精品一区专区欧美日韩| 亚洲免费视频在线观看| 国产精品久久在线观看| 成人免费网视频| 91精品国产综合久久香蕉的用户体验| 亚洲精品电影网站| 中文字幕国产日韩| 久久视频免费在线播放| 欧美激情视频在线| 色婷婷**av毛片一区| 97国产精品久久| 日韩av电影中文字幕| 亚洲天堂一区二区三区| 亚洲国产欧美一区| 色诱女教师一区二区三区| 色先锋久久影院av| 精品久久久久国产| 亚洲跨种族黑人xxx| 久久在精品线影院精品国产| 欧美性视频网站| 欧美日韩国产中文精品字幕自在自线| 国产精品久久久久久久久免费| 亚洲区在线播放| 琪琪第一精品导航| 欧洲美女7788成人免费视频| 国产精品极品在线| 成人免费观看网址| 亚洲国产精品久久| 成人免费在线视频网站| 欧美精品中文字幕一区| 日韩av中文字幕在线免费观看| 在线电影中文日韩| 九九九久久国产免费| 最近的2019中文字幕免费一页| 欧美日韩国产成人在线观看| 中文字幕欧美精品在线| 欧美成人一区二区三区电影| 色天天综合狠狠色| 国产精品久久久久久久久久免费| 久久伊人色综合| 欧美激情视频免费观看| 精品国产乱码久久久久久虫虫漫画| 精品久久久久久久久久久| 久久精品国产精品| 国产91露脸中文字幕在线| 亚洲一区二区在线播放| 久久婷婷国产麻豆91天堂| 成人福利免费观看| 成人情趣片在线观看免费| 国产精品夜色7777狼人| 亚洲影院色在线观看免费| 欧美性猛交xxxx乱大交| 91av视频在线播放| 国产mv免费观看入口亚洲| 欧美诱惑福利视频| 日韩亚洲欧美中文高清在线| 最新国产精品拍自在线播放| 久久视频国产精品免费视频在线| 国产美女精品视频| 亚洲欧美国产日韩中文字幕| www.欧美精品一二三区| 亚洲综合精品一区二区| 精品美女久久久久久免费| 久久天天躁狠狠躁夜夜av| 国产精品流白浆视频| 国内精久久久久久久久久人| 欧美日韩视频免费播放| 日韩的一区二区| 亚洲va欧美va国产综合剧情| 成人激情视频小说免费下载| 大荫蒂欧美视频另类xxxx| 精品少妇一区二区30p| 精品激情国产视频| 久久中文久久字幕| 精品久久久久久亚洲国产300| 欧美精品videossex性护士| 国语自产精品视频在线看| 亚洲视频欧洲视频| 欧美午夜精品在线| 精品无人国产偷自产在线| 在线看国产精品| 日韩中文字幕在线视频播放| 久久久久女教师免费一区| 欧美裸体男粗大视频在线观看| 亚洲一区二区中文字幕| 91精品久久久久久久久久久久久久| 欧美精品一本久久男人的天堂| 国产极品jizzhd欧美| 91久久精品国产91久久| 欧美日韩国产123| 欧美电影免费观看电视剧大全| 91日韩在线视频| 精品国产一区二区三区在线观看| 精品动漫一区二区三区| 不卡av电影院| 国产激情999| 国产精品扒开腿爽爽爽视频|