UILabel

Lable的作用是显示不可编辑的文字。

属性检查器

  • Text:Label显示的文字

  • Color:文字的颜色

  • Font:字体和字号

  • Alignment:文本的对齐方式

  • Lines:设置Label中文本的行数,默认为1

  • Line Breaks:设置文字的截断,当文本太长以至于Label不能显示全部的字体时,超长的部分会显示“...”,通常在以下三个选项中做选择。

    • Truncate Tail:截断尾部

    • Truncate Head:截断头部

    • Truncate Middle:保留头尾,截断中间

  • Highlighted:设置高亮是文本的颜色

  • Shadow:设置文本的阴影颜色

  • Shadow Offset:设置标签文本的阴影偏移量

代码创建Lable

//代码创建Label
let lable = UILabel(frame: CGRect(x: 100, y: 100, width: 200, height: 200))
lable.text = "代码创建的Lable"
lable.font = UIFont.systemFont(ofSize: CGFloat(28))
lable.textColor = UIColor.red
view.addSubview(lable)

实现

//
//  ViewController.swift
//  LableDemo
//
//  Created by Michael on 2016/10/12.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    //storyboard
    @IBOutlet weak var mLabel: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        // 设置文本
        mLabel.text = "Hello ShenZhen"
        //设置字体对齐方式
        mLabel.textAlignment = .left
        mLabel.textColor = UIColor.red
        mLabel.backgroundColor = UIColor.green
        //设置字体大小
        mLabel.font = UIFont.boldSystemFont(ofSize: 25)
        //文本的行数
        mLabel.numberOfLines = 2
        
        //代码创建Label
        let lable = UILabel(frame: CGRect(x: 100, y: 100, width: 200, height: 200))
        lable.text = "代码创建的Lable"
        lable.font = UIFont.systemFont(ofSize: CGFloat(28))
        lable.textColor = UIColor.red
        view.addSubview(lable)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

示例图

UIButton

UIButton是ios中最基本的按钮控件

属性检查器

在StoryBoard中拖曳生成一个控件时,可以使用属性检查器来设置场景中控件的属性。如果使用的是代码生成的控件,则在代码中给控件的属性赋值来改变属性的属性。

属性检查器的内容如下:

  • Type:按钮的样式,默认是System,也就是透明背景蓝色字体的按钮样式。

  • State Config:默认为default,此外还有HighLight(触摸高亮)、Selected(选中状态)和Disable(禁用状态)

  • Title:设置按钮显示的文字

  • Font:设置后按钮字体和字号

  • TextColor:设置字体颜色

  • Shadow Color:设置文字的阴影颜色

  • Image:设置按钮的图片格式,在这里设置图片会让按钮的文字消失

  • Backgroud:设置按钮的背景图片,保留文字

代码创建按钮

//用代码添加一个Button到View中
let btn1 = UIButton(frame: CGRectMake(100,50,200,200))
btn1.setTitle("word", forState: .Normal)
btn1.backgroundColor = UIColor.blueColor()
//添加点击事件
btn1.addTarget(self, action: #selector(ViewController.show(_:)), forControlEvents: .TouchUpInside)
view.addSubview(btn1)

func show(button : UIButton) {
    print(button.currentTitle!)
}

实现

//
//  ViewController.swift
//  ButtonDemo
//
//  Created by Michael on 16/9/12.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    //实例
    @IBOutlet weak var myButton: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        //用代码添加一个Button到View中
        let btn1 = UIButton(frame: CGRectMake(100,50,200,200))
        btn1.setTitle("word", forState: .Normal)
        btn1.backgroundColor = UIColor.blueColor()
        //添加点击事件
        btn1.addTarget(self, action: #selector(ViewController.show(_:)), forControlEvents: .TouchUpInside)
        view.addSubview(btn1)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func show(button : UIButton) {
        print(button.currentTitle!)
    }


    //StoryBoard点击事件
    @IBAction func click(sender: UIButton) {
        print(sender.currentTitle!)
        //设置文字
        sender.setTitle("hello", forState: .Normal)
        //设置文字颜色
        sender.setTitleColor(UIColor.darkTextColor(), forState: .Normal)
        //设置背景颜色
        sender.backgroundColor = UIColor.redColor()
        //设置圆角
        sender.layer.cornerRadius = 15
        //是否可见
        sender.hidden = false
    }
}

示例

UISwitch、UISilder、UISegmentedControl

UISWitch

Switch控件状态分为开启和关闭状态。

UISwitch的属性检查器的主要内容有:

  • State:有On和Off两种状态

  • On Tint:开关打开时的背景颜色

  • Thumb Tint:滑块的颜色

UISlider

Slider控件通常用来指示进度,并且可以通过拖曳改变进度。

UISlider控件的属性检查器的主要内容有:

  • Value:设置Value的最大值、最小值,以及通过设置Current的值来限定Slider初始化时滑块的位置

  • Min Image和Max Image:Slider最大值和最小值处的图片

  • Min Track Tint:滑块左侧轨道的颜色

  • Max Track Tint:滑块右侧轨道的颜色

  • Thumb Tint:滑块的颜色

  • Events:有一个可选项Continuous Updates,勾选后再拖动滑块的过程中会不断触发事件

UISegmentedControl(分段控件)

UISegmentedControl的属性检查器的主要内容有:

  • Style:样式

  • State:

  • Segments:设置分段的数量,默认的是2个,而且不能低于2个。

  • Segment:设置当前编辑的分段

  • Title:设置该分段所显示的文字,默认是First、Second等英文序数词

  • Image:设置该分段的图片

  • Behavior:Enabled表示该分段是否可用,Selected表示在初次加载时该分段是否被选中

  • Content OffSet:设置分段中的Title的位置,如果对默认的位置不满意,则可以设置X和Y方向的偏移量来调整,可正可负

实现

//
//  ViewController.swift
//  OtherButtonDemo
//
//  Created by Michael on 2016/10/13.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var mSwitchButton: UISwitch!
    @IBOutlet weak var mBottomSwitch: UISwitch!
    @IBOutlet weak var mSegmentButton: UISegmentedControl!
    @IBOutlet weak var mLabel: UILabel!
    @IBOutlet weak var mSlideButton: UISlider!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        mSlideButton.minimumValue = 0
        mSlideButton.maximumValue = 100
        mSlideButton.setValue(60, animated: true)
        mLabel.text = String(format: "SlideValue: %0.0f", mSlideButton.value)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
        

    }

    /**
    * UISwitch点击事件
    *
    */
    @IBAction func switchValueChange(_ sender: AnyObject) {
        //AnyObject转为UISwitch类型
        let witchSwitch = sender as! UISwitch
        print(witchSwitch.isOn)
        print(mSwitchButton.isOn)
        mBottomSwitch.setOn(mSwitchButton.isOn, animated: true)
    }
    
    //
    //UISegmentedControl点击事件
    //
    @IBAction func switchSegment(_ sender: AnyObject) {
        //选择的段
        NSLog("%ld", mSegmentButton.selectedSegmentIndex)
        if mSwitchButton.isHidden {
            self.mSwitchButton.isHidden = false;
        } else {
            self.mSwitchButton.isHidden = true;
        }
    }
    
    //USlider滑动事件
    @IBAction func slideValueChange(_ sender: AnyObject) {
        let slider = sender as! UISlider
        NSLog("\(slider.value)")
        mLabel.text = String(format: "SlideValue: %0.3f", slider.value)
    }
}

示例图

UITextField和UITextView

UITextField

UITextField文本框与UILabel的不同是文本框是可以编辑的。iOS用到的文本框的地方很多,比如搜索框、用户登录框等。

UITextField的属性检查器的主要内容有:

  • Placeholder:默认显示在这里的文字,通常用来提示该文本框中需要输入的内容

  • Border Style:选择文本框的样式

  • Clear Button:设置清除输入的按钮

  • Min Font Size:文本框被挤压时,文本框中字体的最小尺寸

  • Capitalization:设置文本框是否自动转换大小写

  • Spell Checking:检查是否有拼写错误

  • KeyBoard Style:键盘的样式

  • Return key:选择返回键的样式

UITextView

UITextView也是可以编辑文本内容的,适用于大段文本的编辑

实现

//
//  ViewController.swift
//  TextDemo
//
//  Created by Michael on 2016/10/12.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController,UITextFieldDelegate,UITextViewDelegate {

    @IBOutlet weak var mTextField: UITextField!
    @IBOutlet weak var mTextView: UITextView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        mTextField.delegate = self
        mTextView.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func onClick(_ sender: UIButton) {
        NSLog("TextFiled: %@", mTextField.text!)
        NSLog("TextView: %@", mTextView.text!)

    }
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        //关闭键盘
        mTextField.resignFirstResponder()
        NSLog("TextFiled 获得焦点")
        return true
    }
    
    func textFieldDidEndEditing(_ textField: UITextField) {
        NSLog("%@", textField.text!)
    }
    
    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
        if text == "\n" {
            NSLog("TextView 获得焦点")
            //关闭键盘
            mTextView.resignFirstResponder()
            return false
        }
        return true
    }

}

示例图

UIProgressView

ProgressView(进度条)可以用来显示式地表示某个操作处理的进度。

属性检查器

  • Progress:当前进度条的进度值

  • Progress Tint:已完成进度部分的颜色

  • Track Tint:未完成部分的颜色

  • Progress Image:使用图片填充以完成的部分

  • Track Image“使用图片填充未完成的部分

实现

//
//  ViewController.swift
//  ProgressViewDemo
//
//  Created by Michael on 2016/10/18.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var mProgressView: UIProgressView!
    var timer:Timer!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.mProgressView.progress = 0;
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    @IBAction func download(_ sender: AnyObject) {
        //执行定时任务
        self.timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.download as (ViewController) -> () -> ()), userInfo: nil, repeats: true)
    }
    
    func download() {
        
        //更新进度值
        self.mProgressView.progress += 0.05
        
        if self.mProgressView.progress == 1.0 {
            //结束定时器
            self.timer.invalidate()
        }
        
    }
}

示例图

UIActivityIndicatorView

与UIProgressView相比,UIActivityIndicatorView不会显示具体的进度,只是用做提示的作用

属性检查器

  • Style:样式有三种:Gray、White、Large White

  • Color:ActivityIndicatorView的颜色

  • Behavior:有两个选项:Animating表示ActivityIndicatorView的齿轮是否在转动;Hides When Stopped 表示当齿轮停止转动时是否将ActivityIndicatorView隐藏。

实现

//
//  ViewController.swift
//  IndicatorViewDemo
//
//  Created by Michael on 2016/10/18.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var mIndicatorView: UIActivityIndicatorView!

    override func viewDidLoad() {
        super.viewDidLoad()
        //活动指示器出于非活动状态时则会隐藏
        mIndicatorView.hidesWhenStopped = true
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        @IBAction func download(_ sender: AnyObject) {
        }
        // Dispose of any resources that can be recreated.
    }

    @IBAction func upLoad(_ sender: AnyObject) {
        if mIndicatorView.isAnimating {
            //停止旋转
            mIndicatorView.stopAnimating()
        } else {
            //开始旋转
            mIndicatorView.startAnimating()
        }
    }
}

示例图

UIStepper

UIStepper(步进器)的作用是按照约定的步长进行增减操作。Stepper上的+和-按钮对应Stepper所控制的数值的增减操作

属性检查器

  • Value:Stepper所控制的值。Mininum表示最小值,Maximun表示最大值,Current表示初始化时的值,Step表示步长。

  • Behavior:有三个复选框

    • Autorepeat:表示按住+和-的时候会不断地触发Stepper。

    • Continuous:勾选后系统实时触发ValueChanged事件,未勾选时系统只有当用户停止与Stepper交互时才触发ValueChanged事件。

    • Wrap:选择后当前当前Value值达到最大最小值时会继续增加或减少,value值会被复位成一个循环,比如最大值为100,最小值为0,当达到100后继续增加时Value的值就会变为0;如未选中,则达到最大或最小值时,Value会保持最大或最小值。

实现

//
//  ViewController.swift
//  StepperDemo
//
//  Created by Michael on 2016/10/19.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var mStepper: UIStepper!
    @IBOutlet weak var mCount: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        mStepper.stepValue = 1.0 //步长
        mStepper.minimumValue = 0.0
        mStepper.maximumValue = 10.0
        mStepper.value = 0.0 //当前值
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.

    }


    @IBAction func step(_ sender: AnyObject) {
        let text = String(format: "数量%d", Int(mStepper.value))
        mCount.text = text
    }
}    

示例图

UIImageView

UIImageView是用于展示图片的控件。

属性检查器

  • Image:从工程的图片资源文件夹中选择一张图片作为UIImageVIew的填充,在Storyboard中使用图片名称来索引图片

  • Highlighted:高亮状态下显示的图片

  • State:可以设置UIImageView的初始状态,默认是非高亮状态

实现

//
//  ViewController.swift
//  ImageView
//
//  Created by Michael on 2016/10/19.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var mImage: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        mImage.image = UIImage(named: "ic_welcome")! //代码添加图片
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

示例图

UIPickerView

UIPickerView是可以用来更灵活地显示滑轮要显示的内容,如选择省市区等。

属性检查器

Behavior:默认勾选,勾选后会高亮显示选中的选项

实现

//
//  ViewController.swift
//  PickerViewDemo
//
//  Created by Michael on 2016/10/20.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource {

    @IBOutlet weak var mPickerView: UIPickerView!
    @IBOutlet weak var mLable: UILabel!
    
    var pickerData: NSDictionary!
    var pickerProvinceData: NSArray!
    var pickerCityData: NSArray!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //从资源文件夹获取plist文件内容
        let listPath = Bundle.main.path(forResource: "provinces_cities", ofType: "plist")
        let dict = NSDictionary(contentsOfFile: listPath!)
        self.pickerData = dict
        
        self.pickerProvinceData = self.pickerData.allKeys as! NSArray
        
        let provice = self.pickerProvinceData[0] as! String
        self.pickerCityData = self.pickerData[provice] as! NSArray
        
        //设置代理处理回调事件
        mPickerView.dataSource = self
        mPickerView.delegate = self
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    //确定选择器的拨轮的数目
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 2
    }
    
    //确定每个拨轮的条目数
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if component == 0 {
            return self.pickerProvinceData.count
        } else {
            return self.pickerCityData.count
        }
    }
    
    //为选择器某个拨轮的条目提供显示数据
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if component == 0 {
            return self.pickerProvinceData[row] as? String
        } else {
            return self.pickerCityData[row] as? String
        }
    }
    
    //选择选择器的某个拨轮的条目时调用
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if component == 0 {
            let provice = self.pickerProvinceData[row] as! String
            self.pickerCityData = self.pickerData[provice] as! NSArray
            self.mPickerView.reloadComponent(1)
        }
    }

    @IBAction func onClick(_ sender: UIButton) {
        let row1 = self.mPickerView.selectedRow(inComponent: 0)
        let row2 = self.mPickerView.selectedRow(inComponent: 1)
        let province = self.pickerProvinceData[row1] as! String
        let city = self.pickerCityData[row2] as! String
        let title = String(format: "%@,%@市", province,city)
        mLable.text = title
        
    }
}

示例图

UIDatePickerView

属性检查器

  • Model:设置UIDatePicker的样式,有以下四种模式:

    • Date and Time:显示的是时间和日期

    • Date:只显示日期

    • Time:只显示时间

    • Count Down Timer:显示24小时制的倒计时模式

  • Local:设置语言类型,默认是英文

  • Interval:设置时间间隔,以分钟为单位

  • Date:显示的日期,默认是当前的日期

  • Constraints:设置UIDatePickerView的最大值和最小值

  • Timer:设置Count Down Time模式下倒计时的秒数

实现

//
//  ViewController.swift
//  DatePickerViewDemo
//
//  Created by Michael on 2016/10/19.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var mDatePickerView: UIDatePicker!
    @IBOutlet weak var mDesc: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        mDesc.text =  mDatePickerView.date.description(with: Locale.current)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func datePick(_ sender: AnyObject) {
        let date = mDatePickerView.date
        let format = DateFormatter()
        format.dateFormat = "YYYY-MM-dd HH:mm:ss"
        let time = format.string(from: date)
       mDesc.text =  time
    }

    @IBAction func timeMode(_ sender: AnyObject) {
        //设置为Time模式
        mDatePickerView.datePickerMode = UIDatePickerMode.time
    }
    
    
    @IBAction func dateMode(_ sender: AnyObject) {
        mDatePickerView.datePickerMode = UIDatePickerMode.date
    }
    
    @IBAction func dateAndTimeMode(_ sender: AnyObject) {
        mDatePickerView.datePickerMode = UIDatePickerMode.dateAndTime
    }
    
    @IBAction func mCountDownTime(_ sender: AnyObject) {
        mDatePickerView.datePickerMode = UIDatePickerMode.countDownTimer
    }
    
}

示例图

  • Date and Time模式

  • Time模式

  • Date模式

  • Count Down Timer模式

UIAlertView&UIActionSheet

UIAlertView是用来显示的提示框的控件,只能在代码中创建.
UIActionSheet是用来显示操作表的控件,也只能在代码中创建。

使用步骤:

  1. 创建一个UIAlertController的实例

  2. 创建UIAlertAction的实例,可以有多个

  3. 将UIAlertAction实例添加到UIAlertController中

  4. 使用UIViewController的present显示UIAlertController

实现

//
//  ViewController.swift
//  AlertViewDemo
//
//  Created by Michael on 2016/10/18.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var mAlertBtn: UIButton!
    @IBOutlet weak var mActionBtn: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    //弹出警告栏
    @IBAction func showAletView(_ sender: AnyObject) {
        
        let alertController = UIAlertController(title: "警告", message: "是否继续?", preferredStyle: UIAlertControllerStyle.alert)
        
        //取消
        let noAction = UIAlertAction(title: "否", style: UIAlertActionStyle.cancel) { (UIAlertAction) in
            NSLog("No")
        }
        
        //确认
        let yesAction = UIAlertAction(title: "是", style: UIAlertActionStyle.default) { (UIAlertAction) in
            NSLog("Yes")
        }
        let confirmAction = UIAlertAction(title: "是", style: UIAlertActionStyle.destructive) { (UIAlertAction) in
            NSLog("Yes")
        }
        //添加文本框
        alertController.addTextField { (UITextField) in
            UITextField.placeholder = "请输入密码"
        }
        alertController.addAction(noAction)
        alertController.addAction(yesAction)
        alertController.addAction(confirmAction)
        
        self.present(alertController, animated: true, completion: nil)
    }
    
    //弹出操作表
    @IBAction func showActionSheet(_ sender: AnyObject) {
        
        //默认是ActionSheet
        let actionSheet = UIAlertController()
        
        let cancelAction = UIAlertAction(title: "取消", style: UIAlertActionStyle.cancel) { (UIAlertAction) in
            NSLog("cancel")
        }
        
        let sina = UIAlertAction(title: "新浪微博", style: UIAlertActionStyle.destructive) { (UIAlertAction) in
            NSLog("weibo")
        }
        let wechat = UIAlertAction(title: "微信", style: UIAlertActionStyle.default) { (UIAlertAction) in
            NSLog("wechat")
        }
        
        let tecent = UIAlertAction(title: "QQ空间", style: UIAlertActionStyle.default) { (UIAlertAction) in
            NSLog("tecent")
        }
        
        actionSheet.addAction(cancelAction)
        actionSheet.addAction(sina)
        actionSheet.addAction(wechat)
        actionSheet.addAction(tecent)
        
        self.present(actionSheet, animated: true, completion: nil)
    }
}

示例图

  • UIAlertView

  • UIActionSheet

UIToolbar

属性检查器

  • Style:工具栏的样式,浅色和深色

  • Translucent:是否半透明

  • Bar Tint:工具栏的颜色

实现

//
//  ViewController.swift
//  ToolBarDemoo2
//
//  Created by Michael on 2016/10/18.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var mDesc: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func save(_ sender: AnyObject) {
        mDesc.text = "存储"
    }

    @IBAction func done(_ sender: AnyObject) {
        mDesc.text = "完成"
    }
    
    @IBAction func edit(_ sender: AnyObject) {
        mDesc.text = "编辑"
    }
}

示例图

UISearchBar

UISearchBar是用于显示搜索框的控件

属性检查器

  • Text:SearchBar中输入的文字

  • PlaceHolder:占位符,通常用来提示用户输入的内容

  • Prompt:SearchBar的标题,显示在输入框的上方

  • Search Style:SearchBar的样式,可以选择边框加深还是搜索框加深

  • Bar Style:整体的颜色,可选择深色和浅色

  • Bar Tint:边框的颜色

  • Background:设置背景图片

  • Scope Bar:设置Scope Bar的背景图片

  • Search Text:设置关键字的位置。默认是在左边

  • Options:SearchBar的右侧可以配备一个功能按钮,比如查找搜索记录、清除已输入的内容。

实现

//
//  ViewController.swift
//  SearchBar
//
//  Created by Michael on 2016/10/21.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit

class ViewController: UIViewController,UISearchBarDelegate {
    @IBOutlet weak var mSearch: UISearchBar!

    @IBOutlet weak var mInfo: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        mSearch.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        mInfo.text = searchText
    }
    
    func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
        NSLog("searchBarCancelButtonClicked");
    }
    
    //按搜索键时调用
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        NSLog("searchBarSearchButtonClicked");
    }
    
}

示例图

WebView

浏览网页需要先在配置文件Info.plist中增加App Transport Security Settings,并在此条目增加子条目Allow Arbitrary Loads并设置为YES,否则加载网页会失败

WKWebView

WKWebView不是UKit内容,它属于WebKit中的类,是在iOS8中引入的部分。WKWebView将浏览器的内存渲染进程从App转移到系统中进行,提高了性能;其次它拥有和Safari相同的JavaScript引擎;最后它拥有60fps的滚动刷新频率。

实现

//
//  ViewController.swift
//  WebViewDemo
//
//  Created by Michael on 2016/10/17.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit
import WebKit //引入库

class ViewController: UIViewController,WKNavigationDelegate {
    
    @IBOutlet weak var mButton: UIButton!
    var mWebView: WKWebView!
    @IBOutlet weak var mSafari: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        mButton.layer.borderColor = UIColor.black.cgColor
        mButton.layer.borderWidth = 1
        
        //设置Button的边框颜色
        mSafari.layer.borderColor = UIColor.black.cgColor
        mSafari.layer.borderWidth = 1
     }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func openWeb(_ sender: AnyObject) {
        
        //打开网页
        mWebView = WKWebView(frame: view.frame)
        let mUrl = URL(string: "http://www.baidu.com")
        let request = URLRequest(url: mUrl!)
        mWebView.load(request)
        //注册网页加载过程代理
        mWebView.navigationDelegate = self
        view.addSubview(mWebView)
    }
    
    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        NSLog("开始加载")
    }
    
    func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
        NSLog("内容开始返回时回调")
    }
    
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        NSLog("加载完成")
    }
    
    func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
        NSLog("加载失败")
    }
    
}

示例图

SFSafariViewController

SFSafariViewController是iOS9中加入的控制器,这样就可以直接使用Safari来打开网页,获得Safari的完整功能而不需要离开App。

实现

//
//  ViewController.swift
//  WebViewDemo
//
//  Created by Michael on 2016/10/17.
//  Copyright © 2016年 Michael. All rights reserved.
//

import UIKit
import SafariServices //引入库

class ViewController: UIViewController,WKNavigationDelegate {
    
    @IBOutlet weak var mSafari: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //设置Button的边框颜色
        mSafari.layer.borderColor = UIColor.black.cgColor
        mSafari.layer.borderWidth = 1
     }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func openSafari(_ sender: AnyObject) {
        //通过Safari打开网页
        let mUrl = URL(string: "http://www.baidu.com")
        let safari = SFSafariViewController(url: mUrl!)
        //展示视图
        present(safari, animated: true,completion: nil)
    }
    
    
}

示例图


刘涤生
243 声望29 粉丝

临渊羡鱼,不如退而结网。