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

首頁 > 編程 > Swift > 正文

Swift實現可自定義分頁寬度的UIScrollView

2020-03-09 17:44:52
字體:
來源:轉載
供稿:網友

最近在開發新版的APP時需要一個可自定義分頁寬度的圖片輪播組件。剛開始自己覺得在這個萬能的互聯網上早就應該有一個大俠為我們封裝好了,我只需要下載、拷貝、粘貼、修改一下代碼就可以了。誰知一圈下來,不知道是自己沒搜到,還是什么其它原因,根本就找不到。所以,一狠心就自己開干了。

我們先看一下需要的效果,如下圖:

Swift,分頁,UIScrollView

總起來說,所需要功能有如下幾項:

  • 可自定義分頁的寬度,并且在兩邊可以顯示相鄰兩項的一部分,從而用戶知道可以滑動;
  • 可以無限輪播;
  • 可以自動輪播。

對于無限輪播和自動輪播在網上一搜索一大把。這里我就不詳細講了,其原理就是第一頁和最后一頁對contentOffset做一下特殊處理,其它沒有什么玄機。

而對于定義分頁的寬度經過一番搜索之后實現的方法也基本上處于同一,原理如下圖:

Swift,分頁,UIScrollView

把所能滾動的視圖的寬度定為所需要的寬度,并把它放入另外一個View中,同時把clipsToBounds設置為false,這樣相鄰的兩個頁面就會顯示在ScrollView兩邊的空白地方,而不是被切除不顯示。另外,如果能夠讓Scroll View的兩邊的空白地方也可以滑動,那么需要將View Enhancer的點擊事件同時作用到Scroll View上。

Ok,既然原理都懂了,那么下手開干就不是問題了。代碼我就不在這里貼了,可以去我的github上下載,如果喜歡別忘了star一下哦。

看一下示例是如何使用的:

class ScrollViewPagingDemoViewController: UIViewController override func viewDidLoad() { super.viewDidLoad() self.view.addSubview(scrollPagingView) // 添加你的Page view,如: let view1 = UIView(frame: CGRectZero) view1.backgroundColor = UIColor(red: 0xff/255.0, green: 0x2d/255.0, blue: 0x41/255.0, alpha: 1.0) view1.layer.borderColor = UIColor(red: 0xff/255.0, green: 0x2d/255.0, blue: 0x41/255.0, alpha: 1.0).CGColor view1.layer.borderWidth = 0.5 view1.layer.cornerRadius = 5 scrollPagingView.addPage(view1) let view2 = UIView(frame: CGRectZero) view2.backgroundColor = UIColor(red: 0x00/255.0, green: 0x7a/255.0, blue: 0xff/255.0, alpha: 1.0) view2.layer.borderColor = UIColor(red: 0x00/255.0, green: 0x7a/255.0, blue: 0xff/255.0, alpha: 1.0).CGColor view2.layer.borderWidth = 0.5 view2.layer.cornerRadius = 5 scrollPagingView.addPage(view2) let view3 = UIView(frame: CGRectZero) view3.backgroundColor = UIColor(red: 0x4b/255.0, green: 0xd9/255.0, blue: 0x64/255.0, alpha: 1.0) view3.layer.borderColor = UIColor(red: 0x4b/255.0, green: 0xd9/255.0, blue: 0x64/255.0, alpha: 1.0).CGColor view3.layer.borderWidth = 0.5 view3.layer.cornerRadius = 5 scrollPagingView.addPage(view3) let view4 = UIView(frame: CGRectZero) view4.backgroundColor = UIColor(red: 0xff/255.0, green: 0x96/255.0, blue: 0x00/255.0, alpha: 1.0) view4.layer.borderColor = UIColor(red: 0xff/255.0, green: 0x96/255.0, blue: 0x00/255.0, alpha: 1.0).CGColor view4.layer.borderWidth = 0.5 view4.layer.cornerRadius = 5 scrollPagingView.addPage(view4) // 用戶點擊事件,如果需要的話   let tapGesture = UITapGestureRecognizer(target:self, action: #selector(ScrollViewPagingDemoViewController.scrollViewTapAction(_:))) scrollPagingView.addGestureRecognizer(tapGesture) } override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() // 設置大小,并初始化setup方法必須調用 self.scrollPagingView.frame = CGRect(x: 0, y: 100, width: self.view.bounds.width, height: 240) self.scrollPagingView.setup()  } private lazy var scrollPagingView: CDScrollPagingView = { let scrollPagingView = CDScrollPagingView() // 控制頁與頁之間的間隔,默認為10 scrollPagingView.itemSpacing = 10.0 // 是否顯示分頁指示器,默認顯示 scrollPagingView.showPageControl = true // 自動切換的時間間隔,默認為3s,0表示不自動切換 scrollPagingView.timeInterval = 3.0 return scrollPagingView }() func scrollViewTapAction(sender: CDScrollPagingView){ if let curPage = scrollPagingView.currentPage() {  let alertController = UIAlertController(title: "系統提示",            message: "您點擊第//(curPage)頁", preferredStyle: .Alert)  let okAction = UIAlertAction(title: "Ok", style: .Default, handler: nil)  alertController.addAction(okAction)  self.presentViewController(alertController, animated: true, completion: nil) } }}

需要說明的有以下幾點:

  • 分頁的寬度可以通過設置CDScrollPagingView.pageWidth的值大小來控制,默認為0.85即整個寬度的85%
  • 頁與頁之間的間隔可以通過CDScrollPagingView.itemSpacing來設置,默認值為10.0
  • 分頁指示器可以控制是否顯示,控制的參數為CDScrollPagingView.showPageControl
  • 自動輪播的時間間隔可以通過scrollPagingView.timeInterval來控制,默認為3s,如果設置為0表示不進行自動輪播

另外,如果想為每個頁添加點擊事件或者頁面中控件需要添加事件處理是非常麻煩的,因為UIScrollView已經對事件做了處理,所以如果直接綁定事件處理的話會沒有任何反應,這個也把我折騰了好久。不過,對于這種輪播控件的需求大部分應該是點擊了某個頁面后進行一些處理,因此CDScrollPagingView提供了一個方法currentPage()來獲取當前是第幾頁,這樣就可以根據這個值進行處理了。具體可以看上面的示例代碼。

這個控件我也只是開發了最基礎的一些功能,不過已經滿足了自己APP的需要。后續如果需要可能還會需要增加一些動效。

如果感興趣,大家可以到github下載。

P.S. 這個分頁控件里面最少要有3個頁面,否則會崩潰。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区免费| 一区二区三区在线播放欧美| 热草久综合在线| 久久五月天综合| 国产一区二区动漫| 日韩免费观看高清| 在线精品视频视频中文字幕| 欧美最顶级丰满的aⅴ艳星| 亚洲娇小xxxx欧美娇小| 中日韩美女免费视频网址在线观看| 欧美人在线观看| 国产精品中文在线| 亚洲精品日韩欧美| 亚洲激情视频网站| 国产亚洲欧美日韩美女| xvideos成人免费中文版| 欧美日韩美女在线观看| 欧美精品在线免费| 97免费中文视频在线观看| 国产日韩精品在线播放| 91国产精品电影| 亚洲视频在线观看| 欧美日韩福利视频| 精品久久久国产| 日本中文字幕不卡免费| 亚洲白拍色综合图区| 97超级碰在线看视频免费在线看| 久久精品电影网| 国产午夜精品理论片a级探花| 亚洲春色另类小说| 国产成人久久久| 亚洲图片在线综合| 欧美成人午夜激情视频| 色琪琪综合男人的天堂aⅴ视频| 国产精品一区二区久久久久| 狠狠操狠狠色综合网| 日韩av成人在线观看| 一区二区三区视频观看| 国产一区二区色| 欧美刺激性大交免费视频| 国产一区二区成人| 亚洲精品乱码久久久久久按摩观| 日韩av影院在线观看| 久久久999国产| 久久久久国产精品免费| 中文字幕日韩免费视频| 久久97精品久久久久久久不卡| 日本亚洲精品在线观看| 日韩欧中文字幕| 欧美日韩国产综合新一区| 精品国产999| 91精品国产自产在线观看永久| 精品国产网站地址| 精品久久久一区二区| www.亚洲男人天堂| 日韩精品视频在线免费观看| 欧美视频在线看| 国产精品久久久久不卡| www国产精品com| 亚洲人成电影网站色xx| 91国在线精品国内播放| 一区二区在线视频播放| 欧美性猛交xxxx乱大交极品| 精品人伦一区二区三区蜜桃免费| 日本aⅴ大伊香蕉精品视频| 韩剧1988免费观看全集| 亚洲精品国产精品国产自| 日韩激情av在线免费观看| 日韩亚洲第一页| 欧美激情精品久久久久久黑人| 欧美在线亚洲一区| 久久久久久国产精品三级玉女聊斋| 欧美在线视频在线播放完整版免费观看| 亚洲专区中文字幕| 欧美日韩性生活视频| 亚洲韩国青草视频| 中文字幕久精品免费视频| 国产激情视频一区| 欧美亚洲在线观看| 国产中文字幕亚洲| 亚洲日韩欧美视频一区| 97视频在线观看视频免费视频| 久久久99免费视频| 亚洲永久免费观看| 91成人在线播放| 中文字幕无线精品亚洲乱码一区| 中国china体内裑精亚洲片| 欧美激情日韩图片| 91超碰caoporn97人人| 久久精品国产96久久久香蕉| 久久久久久av| 久久成年人免费电影| 中文字幕国产亚洲2019| 亚洲精品v欧美精品v日韩精品| 俺也去精品视频在线观看| 自拍偷拍免费精品| 欧美精品videos另类日本| 久久伊人精品视频| 国产97在线|亚洲| 91色在线视频| 午夜精品福利在线观看| 91tv亚洲精品香蕉国产一区7ujn| 国产精品一区二区av影院萌芽| 日韩免费观看高清| 国产这里只有精品| 日本高清不卡在线| 日韩视频欧美视频| 成人中文字幕+乱码+中文字幕| 国产91精品青草社区| 亚洲国产古装精品网站| 久久久久久这里只有精品| 欧美一区二区三区……| 精品亚洲一区二区三区在线播放| 青青草成人在线| 96国产粉嫩美女| 国产97在线观看| 亚洲男人第一av网站| 亚洲精品国产成人| 色婷婷综合成人av| 亚洲第一av网站| 一区二区av在线| 粉嫩老牛aⅴ一区二区三区| 色综合久久88| 欧美成人精品三级在线观看| 2019中文字幕在线观看| 精品久久久久久久久国产字幕| 国产日韩av在线播放| 亚洲精品资源美女情侣酒店| 在线日韩精品视频| 欧美多人爱爱视频网站| 97久久精品在线| 中文字幕成人精品久久不卡| 国产999在线观看| 欧美性猛交99久久久久99按摩| 中文字幕日韩欧美精品在线观看| 亚洲国产欧美一区二区三区同亚洲| 日韩毛片中文字幕| 中文字幕日韩在线播放| 午夜精品久久久久久久白皮肤| 国产精品白丝av嫩草影院| 欧美一级大片在线观看| 成人美女av在线直播| 国产偷国产偷亚洲清高网站| 欧美日韩精品在线观看| 韩国福利视频一区| 欧美一区二区影院| 国产日韩欧美一二三区| 国产午夜精品一区理论片飘花| 在线精品视频视频中文字幕| 亚洲片av在线| 欧美午夜精品伦理| 亚洲国语精品自产拍在线观看| 精品福利在线视频| 青青久久aⅴ北条麻妃| 亚洲国产精品va在线看黑人| 国产精品视频久| 久久这里只有精品视频首页| 美女av一区二区三区| 亚洲欧美精品中文字幕在线| 亚洲综合在线中文字幕| 欧美成人h版在线观看| 日韩av最新在线| 成人免费大片黄在线播放| 97超级碰在线看视频免费在线看|