Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了第一次用swift写分页demo大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

http://git.oschina.net/lotusome/PageViewDemo 第一次用swift分页demo http://git.oschina.net/lotusome/PageViewDemo 主要用到两个文件 // //  PageView.swift //  PhotoDemo // //  Created by qings on 16/1/24. //  Copyright

http://git.oschina.net/lotusome/PageViewDemo

第一次用swift分页demo

http://git.oschina.net/lotusome/PageViewDemo

主要用到两个文件

//
// PageView.swift
// PhotoDemo
//
// Created by qings on 16/1/24.
// Copyright © 2016年 puKaila. All rights reserved.
//


import Foundation
import UIKit


class PageView : UIView {

var nextButton:UIButton!
var prevButton:UIButton!
var nextButtonWidth:Int!
var prevButtonWidth:Int!
var prevBtnCallBACk:((page:int)->(Void))?
var nextBtnCallBACk:((page:int)->(Void))?
var pageNumCallBACk:((page:int)->(Void))?
var currentPageNum:Int!
var oldPageNum:Int!
var pageScrollView:PageScrollView!
var pageScrollViewPageSize:Int!
var pageScrollViewPageNumHeight:Int!
var pageScrollViewPageNumWidth:Int!
var pageScrollViewPageNumSpacing:Int!

var callBACk:((page:int)->(Void))?
override init(frame: CGRect) {
super.init(frame:framE)
}

func doInit(){
initView()
initEven()
}

func initView() {
oldPageNum = currentPageNum
let x = nextButtonWidth
let y = 0
let w = Int(frame.width) - nextButtonWidth - nextButtonWidth
let h = Int(frame.height)
pageScrollView = PageScrollView(frame: CGRectMake(CGFloat(X),CGFloat(y),CGFloat(w),CGFloat(h)))
pageScrollView.pageSize = pageScrollViewPageSize
pageScrollView.pageHeight = pageScrollViewPageNumHeight
pageScrollView.pageWidth = pageScrollViewPageNumWidth
pageScrollView.spacing = pageScrollViewPageNumSpacing
pageScrollView.BACkgroundColor = UIColor.grayColor()
pageScrollView.showsHorizontalScrollInDicator = true
pageScrollView.currentPageNum = currentPageNum
pageScrollView.addPageNumItem()
pageScrollView.callBACk={(pagE)->Void in
self.oldPageNum = self.currentPageNum
self.currentPageNum = page
self.pageScrollView.setColor(self.oldPageNum,color: self.pageScrollView.normalColor)
self.pageScrollView.setColor(self.currentPageNum,color: self.pageScrollView.currentColor)
self.callBACk!(page:self.currentPageNum)
self.moveToCenterByPageNum(self.currentPageNum)
}
self.addSubview(pageScrollView)

prevButton = initButton(CGRectMake(CGFloat(0),CGFloat(0),CGFloat(nextButtonWidth),CGFloat(h)))
prevButton.settitle("<",forState: UIControlState.Normal)
prevButton.settitleColor(UIColor.blackColor(),forState: UIControlState.Normal)
self.addSubview(prevButton)

nextButton = initButton(CGRectMake(CGFloat(nextButtonWidth+w),CGFloat(h)))
nextButton.settitle(">",forState: UIControlState.Normal)
nextButton.settitleColor(UIColor.blackColor(),forState: UIControlState.Normal)
self.addSubview(nextButton)

self.BACkgroundColor = UIColor.whiteColor()
}

func initEven() {
prevButton.addTarget(self,action: "prevBtnClick:",forControlEvents: UIControlEvents.TouchUpInsidE)
nextButton.addTarget(self,action: "nextBtnClick:",forControlEvents: UIControlEvents.TouchUpInsidE)
}

@R_403_1135@ init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

func initButton(frame: CGRect)->UIButton {
let button:UIButton = UIButton(frame: framE)
button.BACkgroundColor = UIColor.redColor()
return button
}

func prevBtnClick(sender:AnyObject) {
let btn: UIButton = sender as! UIButton
if (currentPageNum > 1) {
oldPageNum = currentPageNum
currentPageNum = currentPageNum-1;
pageScrollView.setColor(oldPageNum,color: pageScrollView.normalColor)
pageScrollView.setColor(currentPageNum,color: pageScrollView.currentColor)
prevBtnCallBACk!(page: currentPageNum)
self.moveToCenterByPageNum(currentPageNum)
}
}
func nextBtnClick(sender:AnyObject) {
let btn: UIButton = sender as! UIButton
if (currentPageNum < pageScrollViewPageSizE) {
oldPageNum = currentPageNum
currentPageNum = currentPageNum+1;
pageScrollView.setColor(oldPageNum,color: pageScrollView.currentColor)
nextBtnCallBACk!(page: currentPageNum)
self.moveToCenterByPageNum(currentPageNum)
}
}

func moveToCenterByPageNum(currentPageNum:int)->Void {
let halfWidth = CGFloat(pageScrollView.frame.width/2)
let tempWidth = CGFloat(currentPageNum * (pageScrollViewPageNumWidth + pageScrollViewPageNumSpacing) - (pageScrollViewPageNumWidth + pageScrollViewPageNumSpacing)/2)
var newX = tempWidth - halfWidth
if (newX > 0 && pageScrollView.contentSize.width > self.frame.width){
if ((pageScrollView.contentSize.width - tempWidth) >= halfWidth) {
pageScrollView.setContentOffset(CGPointMake(newX,0),animated: truE)
} else {
newX = pageScrollView.contentSize.width-pageScrollView.frame.width
pageScrollView.setContentOffset(CGPointMake(newX,animated: truE)
}
} else {
pageScrollView.setContentOffset(CGPointMake(0,animated: truE)
}
}
}

//
// PageView.swift
// PhotoDemo
//
// Created by qings on 16/1/24.
// Copyright © 2016年 puKaila. All rights reserved.
//


import Foundation
import UIKit


class PageScrollView : UIScrollView {
var screenObject:CGRect=UIScreen.mainScreen().bounds;
var pageSize : Int!
var pageHeight: Int!
var pageWidth: Int!
var spacing: Int!
var currentPageNum: Int!
var callBACk:((page:int)->(Void))!
var currentColor:UIColor = UIColor.orangeColor()
var normalColor:UIColor = UIColor.greenColor()


func getPageNum(i:int)->UIView {
let pageNumView : UIView = UIView()
let x:CGFloat = CGFloat((i-1) * pageWidth) + CGFloat((i-1)*spacing)
let y:CGFloat = 0
let width:CGFloat = CGFloat(pageWidth)
let height:CGFloat = CGFloat(pageHeight)
pageNumView.frame = CGRectMake(x,y,width,height)
pageNumView.BACkgroundColor = normalColor

let label:UILabel = UILabel(frame: CGRectMake(0,height))
label.text = String(i)
label.textAlignment = NSTextAlignment.Center
let tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self,action: "pageNumClick:")
pageNumView.addGestureRecognizer(tap)
pageNumView.tag = i
pageNumView.addSubview(label)
return pageNumView
}

func pageNumClick(sender:AnyObject){
let tap:UITapGestureRecognizer = sender as! UITapGestureRecognizer
callBACk(page: sender.view!!.tag)
}

func setColor(page:Int,color:UIColor)->Void {
self.subviews[page-1].BACkgroundColor = color
}

override init(frame: CGRect) {
super.init(frame:framE)
}

func addPageNumItem() {
let width = (self.pageWidth+spacing)*self.pageSize - spacing
let height = self.pageHeight
self.contentSize=CGSizeMake(CGFloat(width),CGFloat(height))
for index in 1...self.pageSize {
self.addSubview(getPageNum(indeX))
}
self.setColor(self.currentPageNum,color: currentColor)
}


@R_403_1135@ init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

调用

// // ViewController.swift // PageViewDemo // // Created by qings on 16/1/24. // Copyright © 2016年 puKaila. All rights reserved. // import UIKit class ViewController: UIViewController { var screenObject:CGRect=UIScreen.mainScreen().bounds var label:UILabel! override func viewDidLoad() { super.viewDidLoad() intView() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func intView() { createPageView() createContentView() } func createContentView() { label = UILabel(frame: CGRectZero) label.text = "1" label.font = UIFont(name: "AmericanTypewriter-Bold",size: CGFloat(120)) label.textAlignment = NSTextAlignment.Center self.view.addSubview(label) label.translatesAutoresizingMaskIntoConsTraints = false let consTraintX:NSLayoutConsTraint = NSLayoutConsTraint( item: label,attribute: .CenterX,relatedBy: .Equal,toItem: self.view,multiplier: 1.0,constant: 0.0) self.view.addConsTraint(consTraintX) let consTraintY:NSLayoutConsTraint = NSLayoutConsTraint( item: label,attribute: .CenterY,constant: 0.0) self.view.addConsTraint(consTraintY) } func createPageView() { let height = 40 let width = screenObject.width let x = 0 let y = screenObject.height - CGFloat(height) let pageView : PageView = PageView(frame: CGRectMake(CGFloat(X),CGFloat(width),CGFloat(height))) pageView.currentPageNum = 1 pageView.pageScrollViewPageSize = 6 pageView.pageScrollViewPageNumHeight = 40 pageView.pageScrollViewPageNumWidth = 40 pageView.pageScrollViewPageNumSpacing = 1 pageView.nextButtonWidth = 44 pageView.prevButtonWidth = 44 pageView.doInit() pageView.callBACk={(pagE)->Void in self.updatePage(pagE) } pageView.prevBtnCallBACk={(pagE)->Void in self.updatePage(pagE) } pageView.nextBtnCallBACk={(pagE)->Void in self.updatePage(pagE) } self.view.addSubview(pageView) } func updatePage(page:int)->Void { self.label.text = String(pagE) } }

大佬总结

以上是大佬教程为你收集整理的第一次用swift写分页demo全部内容,希望文章能够帮你解决第一次用swift写分页demo所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。