1/
// 让导航栏支持右滑返回功能
self.navigationController?.navigationBar.translucent = false
self.navigationController?.interactivePopGestureRecognizer.enabled = true
self.navigationController?.interactivePopGestureRecognizer.delegate = self
2/ 导航栏顶部 左右按钮
let leftButton:UIButton = UIButton(frame: CGRectMake(0, 0, 50, 40))
leftButton.setImage(UIImage(named: "home_zuohua"), forState: UIControlState.Normal)
leftButton.addTarget(self, action: "leftButtonAction", forControlEvents: UIControlEvents.TouchUpInside)
var leftFixedSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target:nil ,action:nil)
leftFixedSpace.width = -15;
self.navigationItem.leftBarButtonItems = [leftFixedSpace,UIBarButtonItem(customView: leftButton)]
let rightButton:UIButton = UIButton(frame: CGRectMake(0, 0, 50, 40))
rightButton.setImage(UIImage(named: "home_tianjia"), forState: UIControlState.Normal)
rightButton.addTarget(self, action: "rightButtonAction", forControlEvents: UIControlEvents.TouchUpInside)
var rightFixedSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target:nil ,action:nil)
rightFixedSpace.width = -15;
self.navigationItem.rightBarButtonItems = [rightFixedSpace,UIBarButtonItem(customView: rightButton)]
3/ 按钮旋转功能
// 旋转功能 self.connectButton.addRotateAnimationWithTime()
/**
*
* 做一个有View的旋转动画扩展,默认旋转一周时间0.6s
*/
extension UIView {
func addRotateAnimationWithTime(_ time:NSTimeInterval? = 0.6){
let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
rotationAnimation.toValue = NSNumber(double: M_PI * 2.0)
rotationAnimation.duration = time!
rotationAnimation.removedOnCompletion = false
rotationAnimation.repeatCount = HUGE
self.layer.addAnimation(rotationAnimation, forKey: "rotationAnimation")
}
}
4/ 点击cell 短时间内选中的效果
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
//。。。。。。
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellId = "TableViewCell"
var cell = tableView.dequeueReusableCellWithIdentifier(cellId) as! SWTableViewCell!
if cell == nil {
var rightButtonArray = NSMutableArray()
rightButtonArray.addUtilityButtonWithColor(grayColor, icon: UIImage(named: "home_editblue"))
rightButtonArray.addUtilityButtonWithColor(appThemeColor, icon: UIImage(named: "home_onwhite"))
cell = SWTableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: cellId, containingTableView: self.myTableView, leftUtilityButtons: nil, rightUtilityButtons: rightButtonArray as [AnyObject])
cell.delegate = self
}
cell.textLabel!.text = "0822655"
cell.detailTextLabel!.text = "Some detail text"
cell.imageView!.image = UIImage(named: "icon_wukong--")
return cell
}
func rightButtonAction(){
let actionSheet = UIActionSheet(title:nil, delegate: self, cancelButtonTitle: "Cancel", destructiveButtonTitle: nil, otherButtonTitles: "New Device","Device Configured")
actionSheet.showInView(self.view)
}
//MARK: - ActionSheetDelegate
func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) {
if buttonIndex==1 {
}else if buttonIndex==2{
}else{
return
}
}
private func buildSubUI(){
//初始化Tableview
self.myTableView = {
let tableView = UITableView(frame: self.view.bounds, style: UITableViewStyle.Plain)
tableView.autoresizingMask = .FlexibleHeight | .FlexibleWidth;
tableView.rowHeight = 64.0
// tableView.separatorStyle = UITableViewCellSeparatorStyle.None
tableView.allowsSelection = false
tableView.delegate = self
tableView.dataSource = self
return tableView
}()
self.myTableView.tableFooterView = UIView() // 这样可以让多余的cell下划线去掉
self.view.addSubview(self.myTableView)
//初始化headerView COEFFICIENT_OF_HEIGHT_ZOOM 适配的缩放比例系数
let headerView = TTAdvertisementView(frame: CGRectMake(0, 0, ScreenWidth, 180*COEFFICIENT_OF_HEIGHT_ZOOM), pictureArray: ["1","2","3"])
self.myTableView.tableHeaderView = headerView
}
class LeftItem {
var icon : String = ""
var title : String = ""
}
private(set) var cellTitleArray : NSMutableArray = {
var arr : NSMutableArray = NSMutableArray()
var item : LeftItem = LeftItem()
item.icon = "leftmenu_password"
item.title = "Account Password"
arr.addObject(item)
var item2 : LeftItem = LeftItem()
item2.icon = "leftmenu_faq"
item2.title = "FAQ"
arr.addObject(item2)
return arr
}()
let headerView = TTAdvertisementView(frame: CGRectMake(0, 0, ScreenWidth, 180*COEFFICIENT_OF_HEIGHT_ZOOM), pictureArray: ["1","2","3"])
self.myTableView.tableHeaderView = headerView
import UIKit
class TTAdvertisementView: UIView, UIScrollViewDelegate{
private(set) var pictureScrollView:UIScrollView?
private(set) var pageContrlolerView:UIPageControl?
private(set) var advertisementTime:NSTimer?
private(set) var advertisementCurrent:NSInteger = 1
private(set) var pictureArray:NSArray!
weak var viewController: UIViewController? // 用于做页面跳转
init(frame: CGRect, pictureArray: NSArray) {
super.init(frame: frame)
self.buildDataAndUI(pictureArray)
}
override func awakeFromNib(){
super.awakeFromNib()
}
required init(coder aDecoder: NSCoder) {
// fatalError("init(coder:) has not been implemented")
super.init(coder: aDecoder)
}
//MARK:- Delegate or DataSource
//MARK:- UIScrollViewDelegate
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
self.advertisementCurrent = NSInteger(scrollView.contentOffset.x / ScreenWidth)
if self.advertisementCurrent == self.pictureArray.count + 1{
self.pictureScrollView?.contentOffset = CGPointMake(0, 0)
self.advertisementCurrent = 1
self.pageContrlolerView?.currentPage = 0
return
}
self.pageContrlolerView?.currentPage = self.advertisementCurrent
}
//MARK:- NSNotification Method
//MARK:- Action Method
//MARK:- Private Method
/**
* 定时器重复方法
*/
func advertisementTimer() {
UIView.animateWithDuration(1, animations: { () -> Void in
self.pictureScrollView?.contentOffset = CGPointMake(ScreenWidth * (CGFloat(self.advertisementCurrent)), 0)
self.pageContrlolerView?.currentPage = self.advertisementCurrent
self.advertisementCurrent++
}) { (finish) -> Void in
if self.advertisementCurrent == self.pictureArray.count + 1{
self.pictureScrollView?.contentOffset = CGPointMake(0, 0)
self.advertisementCurrent = 1
self.pageContrlolerView?.currentPage = 0
}
}
}
/**
//初始化相关子View
*/
func buildDataAndUI(urlArray:NSArray) {
//数据
self.pictureArray = NSArray(array: urlArray)
//UIScrollView
self.pictureScrollView = UIScrollView(frame: CGRectMake(0, 0, ScreenWidth, self.bounds.size.height))
self.pictureScrollView!.pagingEnabled = true
self.pictureScrollView!.delegate = self
self.pictureScrollView!.showsVerticalScrollIndicator = false
self.pictureScrollView!.showsHorizontalScrollIndicator = false
self.pictureScrollView!.userInteractionEnabled = true
self.addSubview(self.pictureScrollView!)
self.pictureScrollView?.contentSize = CGSizeMake(ScreenWidth * CGFloat(self.pictureArray.count + 1), 0)
for (i, urlString) in enumerate(self.pictureArray) {
let pictureImageView = UIImageView(frame: CGRectMake(ScreenWidth*CGFloat(i), 0, ScreenWidth, self.bounds.size.height))
if i == 0{
pictureImageView.image = UIImage(named: "ad_tupian2")
}
if i == 1{
pictureImageView.image = UIImage(named: "ad_tupian")
}
if i == 2{
pictureImageView.image = UIImage(named: "ad_tupian2")
}
// pictureImageView.sd_setImageWithURL(NSURL(string: model.pic!), placeholderImage: UIImage(named: "DefaultBgImage"))
// pictureImageView.contentMode = UIViewContentMode.ScaleAspectFill
// pictureImageView.userInteractionEnabled = true
self.pictureScrollView?.addSubview(pictureImageView)
}
//为了循环多添加一张
let pictureImageView = UIImageView(frame: CGRectMake(CGFloat((self.pictureArray.count)) * ScreenWidth, 0, ScreenWidth, self.bounds.size.height))
pictureImageView.image = UIImage(named: "ad_tupian2")
// pictureImageView.sd_setImageWithURL(NSURL(string: model.pic!), placeholderImage: UIImage(named: "DefaultBgImage"))
// pictureImageView.contentMode = UIViewContentMode.ScaleAspectFill
// pictureImageView.userInteractionEnabled = true
self.pictureScrollView?.addSubview(pictureImageView)
//UIPageControl
self.pageContrlolerView = UIPageControl(frame: CGRectMake(0, self.bounds.size.height - 40, self.bounds.size.width, 40))
self.pageContrlolerView!.numberOfPages = self.pictureArray.count
self.pageContrlolerView!.currentPageIndicatorTintColor = appThemeColor
self.pageContrlolerView!.currentPage = 0
self.addSubview(self.pageContrlolerView!)
//定时器
self.advertisementTime = NSTimer.scheduledTimerWithTimeInterval(3.0, target: self, selector: "advertisementTimer", userInfo: nil, repeats: true)
}
}