swift 初步接觸 基本文法 方法命名 (一)

來源:互聯網
上載者:User

標籤:

今天研究了一下swift語言,隨便找了小demo,一點研究swift文法精髓,整體下來感覺很舒服,就是瞭解文法廢了些時間,我感覺swift語言初期很難瞭解,不過理解過了之後,你才能真正的體會到這個語言的方便之處,沒有過多的累贅,這個語言還真的是門不錯的語言,廢話不多說,記錄下自己的理解筆記,如果有什麼不對的大家多多指教.......

這個是UIViewController實現代碼

//匯入架構import UIKit//檔案的入口,也就是主要編輯程式的地方class ViewController: UIViewController {    override func viewDidLoad() {        //調用父累載入方法        super.viewDidLoad()                        //設定輪播圖的frame,let在swift裡面是標示常量,這個常量和OC的常量不一樣,這裡標示的是不變的量,let可以儲存物件類型        let frame = CGRectMake(0, 20, view.bounds.width, view.bounds.width*0.6)        //這個let就是不變數組        let imageView = ["2.jpg","3.jpg","4.jpg"]        //在swift裡面建立view很簡單,直接調用view方法傳遞參數即可        let loopView =  AdLoopView(frame: frame, images: imageView, autoPlay: true, delay: 3, isFromNet: false)        //添加代理沒有發生變化        loopView.delegate = self        //添加視圖方法,基本和OC沒有變化        view.addSubview(loopView)                /*         從這些裡面我們就可以看出swift的語言保持了OC的文法命名規則,對於OC的開發攻城獅是個福音,調用方法很簡單   方法名(有參數傳參即可)         */    }}//這個是此controller遵循代理方法 關鍵字在extension ,extension的作用是給此檔案添加擴充,此擴充即使OC中的擴充extension ViewController : AdLoopViewDelegate{        //方法命名規則,這個是代理方法,代理方法的命名規則和方式和OC相差不多    func adLoopView(adLoopView: AdLoopView, IconClick index: NSInteger) {        print(index)    }}

view實現的檔案

private var currentImages : NSMutableArray?{        //NAMutableArray的get方法        get{            currentImgs.removeAllObjects()            //let常量 !表示images數組裡面肯定有值            let count = self.images!.count                        var  i  = NSInteger (self.currentPage! + count - 1 )%count                        currentImgs.addObject(self.images![i])                       currentImgs.addObject(self.images![self.currentPage!])                        i = NSInteger(self.currentPage!+1) % count                        currentImgs.addObject(self.images![i])            //傳回值            return currentImgs        }            }    //private 修飾此變數只能此檔案使用  var是表示變數值可以改變  ? 表示此變數可以為空白值或有值    private var images:NSArray?        //BOOL 類型發生改變不在是YES/NO 而是 true/false    private var autoPlay :Bool?    private var isFromNet :Bool?    private var delay : NSTimeInterval?    //建立代理變數 var delegate : 協議名稱?    var delegate : AdLoopViewDelegate?        //override 標示含父類init方法首碼    override init(frame: CGRect) {        super.init(frame: frame)    }    
required init?(coder aDecoder: NSCoder) {        fatalError("init(coder:) has not been implemented")    }    //convenience修飾本類的init函數    convenience init(frame:CGRect, images : NSArray, autoPlay:Bool ,delay:NSTimeInterval , isFromNet:Bool){        self.init(frame :frame)        self.images = images        self.autoPlay = autoPlay        self.isFromNet = isFromNet        self.delay = delay        self.currentPage = 0                createImageScrollView()                createPageView()        //if判斷和CO的文法格式沒有變化,相對於OC還是簡化了,在swift裡面沒有延續OC 0假 1真        if images.count < 2 {            self.autoPlay = false            pageControl?.hidden = true        }                               if self.autoPlay == true {            startAutoPlay()        }    }
 //此for條件0..<3 意思是0到3其中包括0 1 2 不包括3        for  index in 0..<3 {            let imageView = UIImageView(frame:CGRectMake(self.bounds.width*CGFloat(index), 0, self.bounds.width, self.bounds.height))            imageView.userInteractionEnabled = true            imageView.addGestureRecognizer(UITapGestureRecognizer(target:self,action: #selector(AdLoopView.imageViewClick)))                        if self.isFromNet == true {                            }else{                imageView.image =  UIImage(named: self.currentImages![index] as! String);            }                        imageScrollView?.addSubview(imageView)        }
 //as! 表示軟弱型   as?是強轉型                imageView.image = UIImage(named: self.currentImages![i] as! String);
//擴充  履行UIScrollViewDelegate方法extension AdLoopView :UIScrollViewDelegate{    //UIScrollView 代理方法    func scrollViewDidEndDecelerating(scrollView: UIScrollView) {                scrollView.setContentOffset(CGPointMake(self.frame.width, 0), animated: true)    }    //UIScrollView 代理方法    func scrollViewDidScroll(scrollView: UIScrollView) {                let x = scrollView.contentOffset.x                        let width = self.frame.width                        if x >= 2 * width {            currentPage = (currentPage!+1) % self.images!.count            pageControl!.currentPage = currentPage!            refreshImages()        }                        if x <= 0 {                        currentPage = (currentPage!+self.images!.count-1) % self.images!.count                        pageControl!.currentPage = currentPage!                        refreshImages()                    }    }    }
//自訂代理方法 首碼使用@objc protocol  代理名稱:和遵循的協議{代理方法}@objc protocol AdLoopViewDelegate:NSObjectProtocol {        func adLoopView(adLoopView:AdLoopView ,IconClick index:NSInteger)    }

今天就到這裡吧...改天再學學

swift 初步接觸 基本文法 方法命名 (一)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.