自学Swift之路(一)UI入手之基本控件

本系列文章都是以有OC基础来写的,所以注释不会写太多,对基础不够了解的同学可能不太适合,另外本系列文章不是以教程式的形式来写,是记录学习过程的,所以不会有多少讲解

第一步:创建工程

A62A869C-6B27-46C7-96A7-77BF0FB21C66.png

创建好工程后,我们会进入这个界面

C18EA84A-89AF-4920-8824-1CF1F2CA8B8C.png

好了开始编程:写一个创建子视图的方法,里面创建一些基本的UI控件,然后在viewDidLoad中调用:

override func viewDidLoad() {
        super.viewDidLoad()
        
        self.createSubViews()
    }

    func createSubViews(){
    
       
    }

1.创建一个UILabel

//        1.UILabel
        let myLabel = UILabel(frame:CGRectMake(10,20,200,20))
        myLabel.textColor = UIColor.redColor()
        myLabel.text = "这个是一个label"
        myLabel.textAlignment = .Center;
        myLabel.font = UIFont.systemFontOfSize(15)
        myLabel.userInteractionEnabled = true;
        self.view.addSubview(myLabel)

2.UITextField

//        2.UITextField
        let myTextF = UITextField(frame: CGRectMake(50,300,100,30))
        myTextF.borderStyle = .RoundedRect
        myTextF.placeholder = "请输入文字"
        myTextF.secureTextEntry = true
        myTextF.delegate = self
        myTextF.textAlignment = .Center
        myTextF.textColor = UIColor.brownColor()
        myTextF.clearButtonMode = .WhileEditing
        myTextF.font = UIFont.systemFontOfSize(15)
        self.view.addSubview(myTextF)

这个myTextF.delegate = self写出来后,程序会报红,理由是没有签订myTextF的代理,代理直接在这里添加(","隔开)
class ViewController: UIViewController,UITextFieldDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.createSubViews()
    }
func textFieldShouldReturn(textField: UITextField) -> Bool {
        print("点击确定");
        textField.resignFirstResponder()
        return true
    }

3.UIButton

//        2.UIButton
        let myBtn:UIButton = UIButton(type: UIButtonType.Custom)
        myBtn.frame = CGRectMake(100, 100, 100, 100)
//        myBtn.backgroundColor = UIColor.grayColor()
        myBtn.setBackgroundImage(UIImage(named: "查公共设施"), forState: .Normal)
        myBtn.setTitle("点击按钮", forState: .Normal)
        myBtn.addTarget(self, action: "click:", forControlEvents: UIControlEvents.TouchUpInside)
        self.view.addSubview(myBtn)
func click(sender: UIButton) {
        print("%@",sender);
        
    }

4.UIImageView

//        4.UIImageView
        let myImgView = UIImageView(frame: CGRectMake(20, 20, 100, 100))
        
        let url = NSURL(string: "http://hangge.com/blog/images/logo.png")
        let data = NSData(contentsOfURL: url!)
        let img = UIImage(data: data!)
        
//        myImgView.image = UIImage(named: "查公共设施")
        myImgView.image = img;
        self.view.addSubview(myImgView)

        UIView.animateWithDuration(2) { () -> Void in
        myImgView.frame = CGRectMake(200, 200, 100, 100)
        }

写到这里,我想有OC经验的开发者已经发现,两种语言控件的属性是一样的,只是语法有些不一样而已,多写几个就会发现Swift都是一个套路.那好吧,简单的控件就不写了,接下来我们来写下UITableView

//        5.UITableView
        let myTableView = UITableView(frame: self.view.frame, style: .Plain)
        myTableView.delegate = self
        myTableView.dataSource = self
        self.view.addSubview(myTableView)

设置了tableView的代理,就得签订,同样,在这里签订

class ViewController: UIViewController,UITextFieldDelegate,UITableViewDataSource,UITableViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.createSubViews()
    }

有过iOS开发经验的人都知道,tableView中有两个数据源的方法是必须实现的:咱们可以command+左键点进去UITableViewDataSource看看,是这样的:

public protocol UITableViewDataSource : NSObjectProtocol {
    
    //必须的
    
    @available(iOS 2.0, *)
    public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    
    // Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:
    // Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)
    
    @available(iOS 2.0, *)
    public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    
    //可选的
    
    @available(iOS 2.0, *)
    optional public func numberOfSectionsInTableView(tableView: UITableView) -> Int // Default is 1 if not implemented
    
    @available(iOS 2.0, *)
    optional public func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? // fixed font style. use custom view (UILabel) if you want something different
    @available(iOS 2.0, *)
    optional public func tableView(tableView: UITableView, titleForFooterInSection section: Int) -> String?
........................

复制粘贴这两个available的方法并实现它:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10;
    }
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let identifier = "swiftCell"
        var cell = tableView.dequeueReusableCellWithIdentifier(identifier)
        if (cell == nil){
        cell = UITableViewCell(style: .Default, reuseIdentifier: identifier)
            
        }
        cell?.textLabel?.text = "MySwiftCell"
        cell?.detailTextLabel?.textColor = UIColor.brownColor()
        
        return cell!
        
    }

当然,别的方法也是一样,如点击单元格:

 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        print("点击了单元格")
    }

好了,这篇文章的内容就到这里了,下一篇文章将会围绕UITableView,自定义UITableViewCell来写点可视化内容较强的东西。

本人也是正在学习中,文章内容如有错误,还请指正,有需要优化的地方,也请帮忙指出,帮助大家共同进步

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏iOS Developer

Swift纯代码走进UICollectionView

82120
来自专栏c#开发者

ios5开发-UITableView开启编辑功能

该例子添加UITableView编辑功能 具体功能如下 ? 功能很简单但很实用  @implementation AppDelegate @synthesiz...

37870
来自专栏Python疯子

Swift - 给TableView添加编辑功能(删除,插入)

1,下面的样例是给表格UITableView添加编辑功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,第一个分组处于删除状态,第...

42020
来自专栏Objective-C

iOS-HQSliderView点击不同Button切换tableViewCell

46770
来自专栏Python疯子

Swift -标签页控制器(UITabBarController)用法

Simulator Screen Shot 2016年11月8日 19.11.36.png

78220
来自专栏TechBox

史上最全的iOS之UITextView实现placeHolder占位文字的N种方法前言方法一方法二方法三方法四方法五

25830
来自专栏一“技”之长

iOS开发一款小巧简洁的日历控件 原

        日 历是iOS开发中有时会用到的一个UI控件,网上开源的代码也很多,我浏览过一些,大致有两种模式,一种是日历的逻辑由开发者自己实现,通过计算闰年...

52220
来自专栏Alice

效果类似于label从下往上滑(采用uiTableView实现)

首先附上效果图 ? ? 进行描述一下:效果就是类似于是一个竖直方向的滚动视图 并且方向是从下往上  并且能够一直这样循环下去。 代码“ // // ViewC...

24650
来自专栏移动端开发

常用开发技巧系列(一)

前言:         在我们iOS开发的过程中,你要是知道一些特别的小技巧的话,其实是可以帮你省很多事的,当然这东西也不需要我们专门去记,估计没有几个开发人员...

215100
来自专栏進无尽的文章

实践-小效果 V

关键效果设置:在改变tableHeaderView的高度后,再手动调用下 Tb 的 setTableHeaderView方法。

14220

扫码关注云+社区

领取腾讯云代金券