UIScrollView——基本使用
//創建滾動視圖
let scrollView = UIScrollView()
//設置尺寸
scrollView.frame = CGRect(x: 0, y: 0, width: 375, height: 60);
//設置背景色
scrollView.backgroundColor = UIColor.redColor()
//添加視圖
self.view.addSubview(scrollView)
//設置滾動條
//是否顯示水平滾動條
scrollView.showsHorizontalScrollIndicator = true
//是否顯示豎直滾動條
scrollView.showsVerticalScrollIndicator = false
//設置分頁滾動
scrollView.pagingEnabled = true
//設置是否可以拉出空白區域
scrollView.bounces = true
//默認是false。如果是true并且bounces也是true,即使內容尺寸比scrollView的尺寸小,也能垂直推動
scrollView.alwaysBounceVertical = false
//默認是false。如果是true并且bounces也是true,即使內容尺寸比scrollView的尺寸小,也能水平推動
scrollView.alwaysBounceHorizontal = false
//允許滑動視圖本身,如果設為false就不能觸發拖動代理事件
scrollView.scrollEnabled = false
//在scrollView的內容周圍添加一個附件的區域
scrollView.contentInset = UIEdgeInsetsMake(100, 50, 50, 50)
//調整指示器(滾動條)的位置
scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(30, 30, 30, 30)
//設置指示器(滾動條)的樣式
scrollView.indicatorStyle = UIScrollViewIndicatorStyle.Black//黑色
//最小的縮放倍數,默認值為1.0
scrollView.minimumZoomScale = 0.2
//放大的縮放倍數,默認值為1.0
scrollView.maximumZoomScale = 100
//創建一個數組,存儲三張圖片
let imagesArray = ["DOVE 2","DOVE 5","DOVE 10"]
//循環創建ImageView
for i in 0..<imagesArray.count {
//創建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)
}
//設置內容區域
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width*CGFloat(imagesArray.count),scrollView.frame.size.height)
//設置代理
scrollView.delegate = self
//設置directionalLockEnabled
/*
如果這個性能被設置成false,scrollView會被允許在水平和垂直兩個方向滾動。如果設置性能是true并且用戶開始在一個方向拖動時(水平方向或垂直方向),滾動視圖就不能在另一個方向滾動。如果拖動的方向時斜對角線方向,拖動事件將會被鎖住并且用戶可以在任何方向拖動,直到拖動事件結束。這個屬性的默認值是false。
*/
scrollView.directionalLockEnabled = true
//設置偏移量,以固定的速度設置成新的偏移量
scrollView.setContentOffset(CGPointMake(10, 20), animated: false)
//滾動矩形區域到可見的區域,如果完全可見就不做任何操作
scrollView.scrollRectToVisible(CGRectMake(0, 0, 100, 300), animated: false)
//短時間顯示滾動條,當你
scrollView.flashScrollIndicators()
//當用戶觸摸到scrollView時(即使還沒有開始拖動ScrollView)就會返回一個true值
scrollView.tracking
//當用戶已經開始拖動時會返回一個true值,這可能會需要一點時間或者與拖動一段距離
scrollView.dragging
//當用戶不再拖動或者不再觸摸scrollView(但是scrollView仍在滑動)
scrollView.decelerating
//默認值為true
scrollView.delaysContentTouches = true
//默認值為true。如果為false,一旦我們開始追蹤并且觸摸移動,我們無法拖動
scrollView.canCancelContentTouches = true
//如果手勢已經被傳遞到了scollView的父View上,在視圖開始滾動之前毀掉用這個方法。如果這個方法返回的是false,scrollView不會滾動并且這個手勢會繼續向父View傳遞
// scrollView.touchesShouldCancelInContentView(<#T##view: UIView##UIView#>)
//設置縮放
// scrollView.setZoomScale(<#T##scale: CGFloat##CGFloat#>, animated: <#T##Bool#>)
// scrollView.zoomToRect(<#T##rect: CGRect##CGRect#>, animated: <#T##Bool#>)
//默認為true。如果設置,當手勢起作用時用戶會經過最?。畲蟮膮^域,并且,在手勢結束時這個區域會自動設置為最?。畲笾?。
scrollView.bouncesZoom = true
// 當用戶向上的手勢時,會返回true
scrollView.zooming
NSLog("scrollView.zooming>>>>>%zd",scrollView.zooming)
//當我們在最小和最大值中間的一個區域中,會返回true。
scrollView.zoomBouncing
//滾動到頂部,默認值為true
scrollView.scrollsToTop = true
//使用這些容器配置scrollView內置的手勢識別
scrollView.panGestureRecognizer
scrollView.pinchGestureRecognizer
//創建UIPageControl
let pageControl = UIPageControl(frame: CGRectMake(0, scrollView.frame.size.height-30,200, 30))
//總的圖片頁數
pageControl.numberOfPages = 6
//當前頁
pageControl.currentPage = 0
//用戶點擊UIPageControl的響應函數
pageControl.addTarget(self, action: #selector(pageTurn(_:)), forControlEvents: UIControlEvents.ValueChanged)
//設置pageControl 的尺寸
let size = pageControl.sizeForNumberOfPages(6)
//點點的點擊事件
func pageTurn(pageControl:UIPageControl) {
}
//UIscrollView的協議代理方法
//滑動過程中
func scrollViewDidScroll(scrollView: UIScrollView) {
}
//開始拖動
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
}
//開始拖動(以某種速率和偏移量)
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
}
//停止拖動
func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
}
//開始滑動
func scrollViewWillBeginDecelerating(scrollView: UIScrollView) {
}
//允許縮放的視圖(一個scrollview中只能有一個可以縮放且必須設置可以縮放的范圍)
// func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
//
// //返回被縮放的試圖
// //return imageView;
// }
//開始縮放的時候調用
func scrollViewWillBeginZooming(scrollView: UIScrollView, withView view: UIView?) {
}
//正在縮放的時候調用
func scrollViewDidZoom(scrollView: UIScrollView) {
}
//縮放完畢的時候調用
func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) {
}
//將要滾動到頂部的時候調用
func scrollViewShouldScrollToTop(scrollView: UIScrollView) -> Bool {
return true
}
//滾動到頂部的時候調用
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 ["數據0","數據1","數據2","數據3","數據4","數據5","數據6","數據7","數據8","數據9","數據10","數據11"]
}()
//MARK: -頁面加載
override func viewDidLoad() {
super.viewDidLoad()
//實例化導航條
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.
}
}
//相當于OC里面分類的使用、使代碼結構清晰
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 {
//第一種創建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) {
//進行cell點擊事件的處理
}
}
自定義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");
//類注冊創建cell的方式
let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath)
cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator;
return cell;