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

首頁 > 編程 > Swift > 正文

Swift實(shí)現(xiàn)可自定義分頁寬度的UIScrollView

2020-03-09 17:44:52
字體:
供稿:網(wǎng)友

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

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

Swift,分頁,UIScrollView

總起來說,所需要功能有如下幾項(xiàng):

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

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

而對(duì)于定義分頁的寬度經(jīng)過一番搜索之后實(shí)現(xiàn)的方法也基本上處于同一,原理如下圖:

Swift,分頁,UIScrollView

把所能滾動(dòng)的視圖的寬度定為所需要的寬度,并把它放入另外一個(gè)View中,同時(shí)把clipsToBounds設(shè)置為false,這樣相鄰的兩個(gè)頁面就會(huì)顯示在ScrollView兩邊的空白地方,而不是被切除不顯示。另外,如果能夠讓Scroll View的兩邊的空白地方也可以滑動(dòng),那么需要將View Enhancer的點(diǎn)擊事件同時(shí)作用到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) // 用戶點(diǎn)擊事件,如果需要的話   let tapGesture = UITapGestureRecognizer(target:self, action: #selector(ScrollViewPagingDemoViewController.scrollViewTapAction(_:))) scrollPagingView.addGestureRecognizer(tapGesture) } override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() // 設(shè)置大小,并初始化setup方法必須調(diào)用 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() // 控制頁與頁之間的間隔,默認(rèn)為10 scrollPagingView.itemSpacing = 10.0 // 是否顯示分頁指示器,默認(rèn)顯示 scrollPagingView.showPageControl = true // 自動(dòng)切換的時(shí)間間隔,默認(rèn)為3s,0表示不自動(dòng)切換 scrollPagingView.timeInterval = 3.0 return scrollPagingView }() func scrollViewTapAction(sender: CDScrollPagingView){ if let curPage = scrollPagingView.currentPage() {  let alertController = UIAlertController(title: "系統(tǒng)提示",            message: "您點(diǎn)擊第//(curPage)頁", preferredStyle: .Alert)  let okAction = UIAlertAction(title: "Ok", style: .Default, handler: nil)  alertController.addAction(okAction)  self.presentViewController(alertController, animated: true, completion: nil) } }}

需要說明的有以下幾點(diǎn):

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

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

這個(gè)控件我也只是開發(fā)了最基礎(chǔ)的一些功能,不過已經(jīng)滿足了自己APP的需要。后續(xù)如果需要可能還會(huì)需要增加一些動(dòng)效。

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

P.S. 這個(gè)分頁控件里面最少要有3個(gè)頁面,否則會(huì)崩潰。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到swift教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
做爰无遮挡三级| 欧美 中文字幕| 欧美中文字幕一区二区三区亚洲| 国产亚洲福利社区一区| 手机精品视频在线| 一区二区三区四区国产精品| 男人的天堂色| 欧美成人一区在线| 天天综合网在线| 在线观看特色大片免费视频| 国内精品女同女同一区二区三区| 91麻豆精品国产91久久久久| 88国产精品欧美一区二区三区| 少妇愉情理伦片bd| 亚洲女优视频| 色综合视频一区二区三区44| 中文av字幕一区| 中文字幕42页丝袜| 秋霞午夜在线观看| 国产又粗又长又大视频| 国产精品无码午夜福利| 日韩免费高清视频| 国产精品视频一区二区三区| av在线播放网站| 精品一区精品二区| 激情久久五月天| 日韩成人黄色av| 国产又粗又硬又长| 一色屋免费视频| 亚洲aaa在线观看| 欧美自拍偷拍午夜视频| 91专区在线观看| 亚洲已满18点击进入久久| 国产亚洲欧洲高清| 久久久91精品国产| 日韩精品久久久久久| 免费黄网站在线播放| 一区二区三区|亚洲午夜| 性欧美精品高清| 日韩av手机在线播放| 老牛影视av老牛影视av| 蜜桃精品视频在线观看| 色综合久久久久无码专区| www黄色在线观看视频| 日韩欧美中文在线| 91网在线观看| 91精品999| 高清av一区二区三区| 精品国精品自拍自在线| 色噜噜久久综合| 啊啊啊一区二区| 黄色在线一区| 日韩精品一卡| 欧美国产一级| 国产欧美久久久久久久久| 春日野结衣av| 99色在线视频| 亚洲欧洲另类| 免费观看亚洲视频| 国产精品羞羞答答xxdd| 91视频福利网| 91看片就是不一样| 伊人精品久久久久7777| 欧美中文字幕在线观看视频| 美女高潮网站| 欧美日韩一二| 久久久久久久久久久影院| 亚洲综合成人在线| 亚洲天堂久久久久久久| 污版网站在线观看| 中文写幕一区二区三区免费观成熟| 综合激情网...| 久久久久久欧美精品色一二三四| 日本少妇aaa| 小黄文在线观看| 国偷自产av一区二区三区| 一区二区三区高清在线| 一呦二呦三呦精品国产| 欧美福利网址| 欧美最猛黑人xxxx黑人猛交3p| igao视频网在线视频| 丁香花视频在线观看| 亚洲精品国产成人久久av盗摄| 亚洲激情不卡| 久久亚洲AV成人无码国产野外| 亚洲一区二区久久| 亚洲精品中文字幕女同| 高清欧美性猛交xxxx黑人猛| 色青青草原桃花久久综合| 中文精品久久| 国产乱子伦视频一区二区三区| www.伊人久久| 亚洲综合丝袜美腿| aa在线观看视频| 97成人在线观看| 久久成人久久爱| 久久精品国产网站| 中文字幕av不卡| 人人爽人人爽人人片| 日韩高清在线| 亚洲人成绝费网站色www| 色综合久久中文综合久久牛| www.青青青| 精品对白一区国产伦| 97视频在线观看免费高清完整版在线观看| 成熟丰满熟妇高潮xxxxx视频| 亚洲一区在线观| 粉嫩高潮美女一区二区三区| 91国内精品久久| 欧美自拍偷拍第一页| 成人在线国产视频| 免费欧美在线| 黄色一区二区三区四区| 国产人妻黑人一区二区三区| 欧美理论电影大全| 国产麻豆午夜三级精品| 欧美性久久久久| 久久观看最新视频| 日韩精品手机在线观看| 国产精品美女视频免费观看软件| 午夜伊人狠狠久久| 国产精品久久国产愉拍| 黄色免费观看视频网站| 久久久一二三| 国产精品va在线观看无码| 7777在线视频| 欧美h视频在线观看| 欧美日韩国产不卡在线看| 久久久久久久久一| 91欧美大片| 久久人妻少妇嫩草av无码专区| jizz中国免费| 国产在线国偷精品产拍免费yy| 亚洲资源中文字幕| 91精品欧美久久久久久动漫| 日韩女同一区二区三区| 亚洲国产精品黑人久久久| 日韩免费在线看| 草草视频在线观看| 日本阿v视频在线观看| www.99av.com| 国产a区久久久| 国产青青草在线| 久久精品视频91| 欧美日韩亚洲自拍| 日韩中文字幕有码| 全部免费毛片在线播放网站| 精品国产乱码久久久久久郑州公司| 日韩在线欧美在线国产在线| 国产在线精品国自产拍免费| h片精品在线观看| 操操操com| 国产99一区视频免费| 日本蜜桃在线观看| 97久久精品午夜一区二区| 欧美午夜精品久久久久久人妖| 国产盗摄精品一区二区酒店| 久久国产天堂福利天堂| 日本成人在线一区| 999热视频在线观看| 日韩不卡在线| 久久久.www| 男女激情无遮挡| 天天躁日日躁狠狠躁av| 在线国产1区| a看欧美黄色女同性恋| 99久久精品久久久久久清纯| 免费精品视频一区二区三区| 人妻av一区二区三区| 国产精品久久久久久久免费观看| 最近中文字幕在线中文视频| 中文字幕不卡在线视频极品| 国产传媒在线| 亚洲天堂视频在线播放| 激情av中文字幕| 国产aⅴ激情无码久久久无码| 亚洲码无人客一区二区三区| 成人中文字幕在线观看| 日韩毛片一区二区三区| eeuss国产一区二区三区四区| 一区二区三区四区五区视频在线观看| 波多野结衣av在线免费观看| 日韩精品每日更新| 日本黄色片在线播放| 最新国产在线观看| 日韩一级免费观看| 亚洲激情中文| 日本激情一区| 亚洲免费在线看| 亚洲综合在线第一页| 欧美在线视频免费观看| 亚洲欧洲视频在线| 欧美日韩亚洲综合一区| zztt21.su黑料网站| 亚洲精品成人少妇| 99精品久久免费看蜜臀剧情介绍| 免费久久99精品国产自| 风间由美中文字幕在线看视频国产欧美| 亚洲人成网站影音先锋播放| 国产精品偷乱一区二区三区| 亚洲欧美国产高清va在线播放| 麻豆免费在线观看视频| 真人抽搐一进一出视频| 黄色一级a毛片| 午夜成年人在线免费视频| 美女一级全黄| 免费国产麻豆传| 国产极品国产极品| 视频在线不卡| 色先锋资源在线播放av| 一区不卡字幕| 久久久久久国产精品三级玉女聊斋| 欧美jiizzhd精品欧美| 一本大道av一区二区在线播放| 亚洲欧洲另类国产综合| 国产影视一区| 中文xxx视频| av在线免费在线观看| 日韩欧美精品在线视频| 国产乱码精品一区二区三区亚洲人| 蜜桃传媒九九九| 亚洲精品亚洲人成在线观看| 久久久久久亚洲中文字幕无码| 黄色成人免费观看| 电影一区中文字幕| 一本大道av伊人久久综合| 国产黄色特级片| 欧美重口乱码一区二区| 久久精品国产sm调教网站演员| xvideos.蜜桃一区二区| 中文字幕中文字幕中文字幕亚洲无线| 国产91视频一区| 91影院在线观看| 欧洲成人免费aa| 国产精品宾馆| 成人国产精品久久久久久亚洲| av免费播放网址| 狠狠色综合网站久久久久久久| 亚洲午夜av久久乱码| 成人做爰www免费看视频网站| 自拍视频亚洲| 久久中文字幕一区二区| 国产丝袜在线精品| 麻豆91精品91久久久的内涵| 性xxxfreexxxx性欧美| 少妇一级淫免费观看| 丰满人妻一区二区三区53号| 91豆花视频在线播放| 久久精品国产网站| 午夜视频在线观看一区二区三区| 国产精品欧美在线| 日韩欧美一区二区在线观看| 在线观看欧美一区| 欧美性受xxxx黑人猛交| 人人澡人人爽人人揉| 亚洲欧洲av一区二区三区久久| 日韩精品视频网| 秋霞网一区二区三区| 国产原创精品视频| 无码人妻h动漫| 久久久精品人体av艺术| 久久久视频在线| 你懂的视频网址| 国产色综合天天综合网| 精品国产自在精品国产浪潮| 免费一级肉体全黄毛片| 国产精品欧美一区二区三区| 色综合久久久久网| 欧美tickling挠脚心丨vk| 成人午夜剧场免费观看完整版| 中文字幕va一区二区三区| 国产精品嫩草影院av蜜臀| 亚洲大片免费观看| 无码人妻精品一区二区三区66| 91超薄丝袜肉丝一区二区| 国产免费人做人爱午夜视频| 天天干视频在线观看| 俄罗斯一级**毛片在线播放| 香蕉久久一区二区不卡无毒影院| 精品嫩草影院| 色欧美片视频在线观看在线视频| 91麻豆精品一区二区三区| 日本激情五月| 免费视频亚洲| 91视频网址免费观看| 国产亚洲欧美在线视频| 欧美freesex8一10精品| 四虎永久在线精品| 一个人看的www片免费高清视频| 18禁免费无码无遮挡不卡网站| 在线看视频不卡| 99r国产精品视频| 韩国亚洲精品| 青青草原综合久久大伊人精品优势| 91成人国产| 亚洲精品一区二区网址| 亚洲国产精品午夜在线观看| 欧美精品一区二区三区在线看午夜| 欧美第一黄色网| 香蕉视频在线看| 亚洲色图欧美自拍| 香蕉国产在线视频| 日韩一级片一区二区| 亚洲午夜激情网页| 97人人模人人爽人人喊38tv| 五月婷婷一区二区| 高清一区二区三区四区五区| 午夜精品一区二区三区在线视| 欧美成人午夜影院| 久草福利资源在线| 国产特级淫片免费看| 99久久国产免费看| www.88av| 男女污污视频在线观看| 91精品人妻一区二区三区蜜桃2| 色一情一乱一区二区三区| 亚洲摸下面视频| 三级黄色的网站| 成人av播放| 亚洲人成电影网站色www| 日韩视频一区二区三区在线播放免费观看| 免费国偷自产拍精品视频| 伊人网在线播放| 欧美成人家庭影院| 欧美艳星介绍134位艳星| 老司机精品免费视频| 爱啪导航一精品导航站| 羞羞色午夜精品一区二区三区|