UIScrollView——基本使用
//創(chuàng)建滾動視圖
let scrollView = UIScrollView()
//設(shè)置尺寸
scrollView.frame = CGRect(x: 0, y: 0, width: 375, height: 60);
//設(shè)置背景色
scrollView.backgroundColor = UIColor.redColor()
//添加視圖
self.view.addSubview(scrollView)
//設(shè)置滾動條
//是否顯示水平滾動條
scrollView.showsHorizontalScrollIndicator = true
//是否顯示豎直滾動條
scrollView.showsVerticalScrollIndicator = false
//設(shè)置分頁滾動
scrollView.pagingEnabled = true
//設(shè)置是否可以拉出空白區(qū)域
scrollView.bounces = true
//默認(rèn)是false赛糟。如果是true并且bounces也是true,即使內(nèi)容尺寸比scrollView的尺寸小砸逊,也能垂直推動
scrollView.alwaysBounceVertical = false
//默認(rèn)是false璧南。如果是true并且bounces也是true,即使內(nèi)容尺寸比scrollView的尺寸小师逸,也能水平推動
scrollView.alwaysBounceHorizontal = false
//允許滑動視圖本身司倚,如果設(shè)為false就不能觸發(fā)拖動代理事件
scrollView.scrollEnabled = false
//在scrollView的內(nèi)容周圍添加一個附件的區(qū)域
scrollView.contentInset = UIEdgeInsetsMake(100, 50, 50, 50)
//調(diào)整指示器(滾動條)的位置
scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(30, 30, 30, 30)
//設(shè)置指示器(滾動條)的樣式
scrollView.indicatorStyle = UIScrollViewIndicatorStyle.Black//黑色
//最小的縮放倍數(shù),默認(rèn)值為1.0
scrollView.minimumZoomScale = 0.2
//放大的縮放倍數(shù)篓像,默認(rèn)值為1.0
scrollView.maximumZoomScale = 100
//創(chuàng)建一個數(shù)組动知,存儲三張圖片
let imagesArray = ["DOVE 2","DOVE 5","DOVE 10"]
//循環(huán)創(chuàng)建ImageView
for i in 0..<imagesArray.count {
//創(chuàng)建imageView
let imageView = UIImageView(frame: CGRectMake(CGFloat (i)*scrollView.frame.size.width, 0, scrollView.frame.size.width, scrollView.frame.size.height))
//添加圖片
imageView.image=UIImage(named: imagesArray[i])
//打開用戶交互
imageView.userInteractionEnabled = true
//把imageView添加到滾動視圖上
scrollView.addSubview(imageView)
}
//設(shè)置內(nèi)容區(qū)域
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width*CGFloat(imagesArray.count),scrollView.frame.size.height)
//設(shè)置代理
scrollView.delegate = self
//設(shè)置directionalLockEnabled
/*
如果這個性能被設(shè)置成false,scrollView會被允許在水平和垂直兩個方向滾動员辩。如果設(shè)置性能是true并且用戶開始在一個方向拖動時(水平方向或垂直方向)盒粮,滾動視圖就不能在另一個方向滾動。如果拖動的方向時斜對角線方向奠滑,拖動事件將會被鎖住并且用戶可以在任何方向拖動拆讯,直到拖動事件結(jié)束。這個屬性的默認(rèn)值是false养叛。
*/
scrollView.directionalLockEnabled = true
//設(shè)置偏移量,以固定的速度設(shè)置成新的偏移量
scrollView.setContentOffset(CGPointMake(10, 20), animated: false)
//滾動矩形區(qū)域到可見的區(qū)域宰翅,如果完全可見就不做任何操作
scrollView.scrollRectToVisible(CGRectMake(0, 0, 100, 300), animated: false)
//短時間顯示滾動條弃甥,當(dāng)你
scrollView.flashScrollIndicators()
//當(dāng)用戶觸摸到scrollView時(即使還沒有開始拖動ScrollView)就會返回一個true值
scrollView.tracking
//當(dāng)用戶已經(jīng)開始拖動時會返回一個true值,這可能會需要一點(diǎn)時間或者與拖動一段距離
scrollView.dragging
//當(dāng)用戶不再拖動或者不再觸摸scrollView(但是scrollView仍在滑動)
scrollView.decelerating
//默認(rèn)值為true
scrollView.delaysContentTouches = true
//默認(rèn)值為true汁讼。如果為false,一旦我們開始追蹤并且觸摸移動淆攻,我們無法拖動
scrollView.canCancelContentTouches = true
//如果手勢已經(jīng)被傳遞到了scollView的父View上阔墩,在視圖開始滾動之前毀掉用這個方法。如果這個方法返回的是false瓶珊,scrollView不會滾動并且這個手勢會繼續(xù)向父View傳遞
// scrollView.touchesShouldCancelInContentView(<#T##view: UIView##UIView#>)
//設(shè)置縮放
// scrollView.setZoomScale(<#T##scale: CGFloat##CGFloat#>, animated: <#T##Bool#>)
// scrollView.zoomToRect(<#T##rect: CGRect##CGRect#>, animated: <#T##Bool#>)
//默認(rèn)為true啸箫。如果設(shè)置,當(dāng)手勢起作用時用戶會經(jīng)過最猩∏邸/最大的區(qū)域忘苛,并且,在手勢結(jié)束時這個區(qū)域會自動設(shè)置為最谐稀/最大值扎唾。
scrollView.bouncesZoom = true
// 當(dāng)用戶向上的手勢時,會返回true
scrollView.zooming
NSLog("scrollView.zooming>>>>>%zd",scrollView.zooming)
//當(dāng)我們在最小和最大值中間的一個區(qū)域中南缓,會返回true胸遇。
scrollView.zoomBouncing
//滾動到頂部,默認(rèn)值為true
scrollView.scrollsToTop = true
//使用這些容器配置scrollView內(nèi)置的手勢識別
scrollView.panGestureRecognizer
scrollView.pinchGestureRecognizer
//創(chuàng)建UIPageControl
let pageControl = UIPageControl(frame: CGRectMake(0, scrollView.frame.size.height-30,200, 30))
//總的圖片頁數(shù)
pageControl.numberOfPages = 6
//當(dāng)前頁
pageControl.currentPage = 0
//用戶點(diǎn)擊UIPageControl的響應(yīng)函數(shù)
pageControl.addTarget(self, action: #selector(pageTurn(_:)), forControlEvents: UIControlEvents.ValueChanged)
//設(shè)置pageControl 的尺寸
let size = pageControl.sizeForNumberOfPages(6)
//點(diǎn)點(diǎn)的點(diǎn)擊事件
func pageTurn(pageControl:UIPageControl) {
}
//UIscrollView的協(xié)議代理方法
//滑動過程中
func scrollViewDidScroll(scrollView: UIScrollView) {
}
//開始拖動
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
}
//開始拖動(以某種速率和偏移量)
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
}
//停止拖動
func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
}
//開始滑動
func scrollViewWillBeginDecelerating(scrollView: UIScrollView) {
}
//允許縮放的視圖(一個scrollview中只能有一個可以縮放且必須設(shè)置可以縮放的范圍)
// func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
//
// //返回被縮放的試圖
// //return imageView;
// }
//開始縮放的時候調(diào)用
func scrollViewWillBeginZooming(scrollView: UIScrollView, withView view: UIView?) {
}
//正在縮放的時候調(diào)用
func scrollViewDidZoom(scrollView: UIScrollView) {
}
//縮放完畢的時候調(diào)用
func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) {
}
//將要滾動到頂部的時候調(diào)用
func scrollViewShouldScrollToTop(scrollView: UIScrollView) -> Bool {
return true
}
//滾動到頂部的時候調(diào)用
func scrollViewDidScrollToTop(scrollView: UIScrollView) {
}
UITableView——基本使用
import UIKit
class TableViewController: UIViewController {
//MARK: -懶加載
lazy var tableView: UITableView = {
let tableView = UITableView(frame:CGRect(x:0,y:0,width:UIScreen.main.bounds.size.width,height:UIScreen.main.bounds.size.height),style:UITableViewStyle.plain);
tableView.dataSource = self;
tableView.delegate = self;
self.view.addSubview(tableView);
return tableView;
}()
lazy var titleArray:[String] = {
return ["數(shù)據(jù)0","數(shù)據(jù)1","數(shù)據(jù)2","數(shù)據(jù)3","數(shù)據(jù)4","數(shù)據(jù)5","數(shù)據(jù)6","數(shù)據(jù)7","數(shù)據(jù)8","數(shù)據(jù)9","數(shù)據(jù)10","數(shù)據(jù)11"]
}()
//MARK: -頁面加載
override func viewDidLoad() {
super.viewDidLoad()
//實(shí)例化導(dǎo)航條
self.navigationItem.title = "TableViewController";
self.view.backgroundColor = UIColor.red;
self.tableView.backgroundColor = UIColor.yellow;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
//相當(dāng)于OC里面分類的使用汉形、使代碼結(jié)構(gòu)清晰
extension TableViewController:UITableViewDelegate,UITableViewDataSource{
// MARK: - UITableViewDelegate
func numberOfSections(in tableView: UITableView) -> Int {
return 1;
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return titleArray.count;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//第一種創(chuàng)建cell的方式
let initIdentifer = "Cell";
var cell = tableView.dequeueReusableCell(withIdentifier: initIdentifer);
if(cell == nil){
cell = UITableViewCell.init(style: UITableViewCellStyle.subtitle, reuseIdentifier: initIdentifer );
}
cell?.textLabel?.text = titleArray[indexPath.row];
cell?.detailTextLabel?.text = "titleArray\(indexPath.row)";
cell?.accessoryType = UITableViewCellAccessoryType.disclosureIndicator;
return cell!;
}
// MARK: - UITableViewDataSource
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 50;
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 20;
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 30;
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//進(jìn)行cell點(diǎn)擊事件的處理
}
}
自定義cell
第一種方法:
let initIdentifer = "Cell";
var cell = tableView.dequeueReusableCell(withIdentifier: initIdentifer);
if(cell == nil){
cell = UITableViewCell.init(style: UITableViewCellStyle.subtitle, reuseIdentifier: initIdentifer );
}
cell?.textLabel?.text = titleArray[indexPath.row];
cell?.detailTextLabel?.text = "titleArray\(indexPath.row)";
cell?.accessoryType = UITableViewCellAccessoryType.disclosureIndicator;
return cell!;
第二種方法:(通過注冊方式)
self.tableView.register(TableViewCell.self, forCellReuseIdentifier: "TableViewCell");
//類注冊創(chuàng)建cell的方式
let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath)
cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator;
return cell;