//
// DefaultShowVC.swift
// Swift-UI
//
// Created by yangjun on 15/6/15.
// copyright (c) 2015年 阳君. All rights reserved.
//

import UIKit

/** 样式*/
enum DefaultShowStyle : Int {
    case UILable
    case UIButton
    case UISegmentedControl
    case UITextField
    case UiSlider
    case UISwitch
    case UIActivityIndicatorView
    case UIProgressView
    case UIPageControl
    case UIStepper
    case UIImageView
    case UITextView
    case UIDatePicker
    case UIPickerView
    case UIAlertView
    case UIActionSheet
}

/** 基础控件展示*/
class DefaultShowVC: UIViewController,UITextFieldDelegate,UITextViewDelegate,UIPickerViewDataSource,UIPickerViewDelegate,UIActionSheetDelegate {

    /** 样式*/
    var style: DefaultShowStyle = DefaultShowStyle.UILable;
    /** 屏幕宽*/
    private var width: CGFloat!
    /** 数据源*/
    private var dataArray: Array<Array<String>> = []

    override func viewDidLoad() {
        super.viewDidLoad()
        self.width = self.view.frame.size.width
        switch (self.style) {
        case DefaultShowStyle.UILable:
             self.initUILabel()
        case DefaultShowStyle.UIButton:
            self.initUIButton()
        case DefaultShowStyle.UISegmentedControl:
            self.initUISegmentedControl()
        case DefaultShowStyle.UITextField:
            self.initUITextField()
        case DefaultShowStyle.UiSlider:
            self.initUiSlider()
        case DefaultShowStyle.UISwitch:
            self.initUISwitch()
        case DefaultShowStyle.UIActivityIndicatorView:
            self.initUIActivityIndicatorView()
        case DefaultShowStyle.UIProgressView:
            self.initUIProgressView()
        case DefaultShowStyle.UIPageControl:
            self.initUIPageControl()
        case DefaultShowStyle.UIStepper:
            self.initUIStepper()
        case DefaultShowStyle.UIImageView:
            self.initUIImageView()
        case DefaultShowStyle.UITextView:
            self.initUITextView()
        case DefaultShowStyle.UIDatePicker:
            self.initUIDatePicker()
        case DefaultShowStyle.UIPickerView:
            self.initUIPickerView()
        case DefaultShowStyle.UIAlertView:
            self.initUIAlertView()
        case DefaultShowStyle.UIActionSheet:
            self.initUIActionSheet()
        default:
            println("未找到")
        }
    }

    // MARK: - UILable
    private func initUILabel() {
        let label:UILabel = UILabel(frame: CGRectMake(0,0,110,30))// 初始化
        label.backgroundColor = UIColor.clearColor()// 背景色
        label.font = UIFont.systemFontOfSize(17)// 字体大小
        label.textColor = UIColor.blueColor()// 字体颜色
        label.textAlignment = NSTextAlignment.Center// 居中
        label.text = self.title // 显示
        label.center = self.view.center// 居中显示
        self.view.addSubview(label)// 加载到当前view
    }

    // MARK: - UIButton
    private func initUIButton() {
        let button:UIButton = UIButton(frame: CGRectMake(0,30,30))// 初始化
        button.addTarget(self,action: "buttonTouchUpInside:",forControlEvents: UIControlEvents.TouchUpInside)// 点击事件
        button.setimage(UIImage(named: "checked_un"),forState: UIControlState.normal)// 默认
        button.setimage(UIImage(named: "checked"),forState: UIControlState.Selected)// 选中
        button.center = self.view.center// 居中显示
        self.view.addSubview(button)// 加载到当前view
    }

    // MARK: 用户点击UIButton
    func buttonTouchUpInside(button:UIButton) {
        button.selected = !button.selected
        self.title = "UIButton(\(button.selected))"
    }

    // MARK: - UISegmentedControl
    private func initUISegmentedControl() {
        let segmentedControl:UISegmentedControl = UISegmentedControl(items: ["1","2","3"])
        segmentedControl.frame = CGRectMake(0,200,30);
        segmentedControl.addTarget(self,action: "segmentedControlValueChanged:",forControlEvents: UIControlEvents.ValueChanged)
        segmentedControl.selectedSegmentIndex = 0// 默认
        segmentedControl.center = self.view.center
        self.view.addSubview(segmentedControl)
    }

    // MARK: 用户点击UISegmentedControl
    func segmentedControlValueChanged(segmentedControl:UISegmentedControl) {
        self.title = "UISegmentedControl(\(segmentedControl.selectedSegmentIndex))"
    }

    // MARK: - UITextField
    private func initUITextField() {
        let textField:UITextField = UITextField(frame: CGRectMake(0,155,30))
        textField.font = UIFont.systemFontOfSize(14)// 输入字体大小
        textField.delegate = self
        textField.keyboardType = UIKeyboardType.URL// 键盘样式
        textField.borderStyle = UITextBorderStyle.RoundedRect// 设置边框样式,只有设置了才会显示边框样式
        textField.clearButtonMode = UITextFieldviewmode.WhileEditing// 有一键删除按钮
        textField.center = self.view.center
        self.view.addSubview(textField)
        self.inputAccessoryView(textField)// 完成按钮放在键盘上方
    }

    // MARK: UITextFieldDelegate
    // MARK: 正要进入编辑状态
    func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
        return true
    }

    // MARK: 实现监听返回按钮
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()// 关闭键盘
        return true
    }

    // MARK: 输入完毕
    func textFieldDidEndEditing(textField: UITextField) {
        self.title = "textField:\(textField.text)"
    }

    // MARK: - initUiSlider
    private func initUiSlider() {
        let slider: UiSlider = UiSlider(frame: CGRectMake(0,31))
        slider.minimumValue = 0// 指定可变最小值
        slider.maximumValue = 100// 指定可变最大值
        slider.value = 50    // 指定初始值
        slider.addTarget(self,action: "sliderValueChanged:",forControlEvents: UIControlEvents.ValueChanged)// 响应事件
        slider.center = self.view.center
        self.view.addSubview(slider)
    }

    // MARK: 用户点击UiSlider
    func sliderValueChanged(slider: UiSlider) {
        self.title = "UiSlider:\(slider.value)"
    }

    // MARK: - UISwitch
    private func initUISwitch() {
        let uiSwitch = UISwitch(frame: CGRectMake(0,51,31))
        uiSwitch.tintColor = UIColor.blueColor()// 未打开时背景色
        uiSwitch.onTintColor = UIColor.greenColor()// 打开时背景色
        uiSwitch.addTarget(self,action: "switchValueChanged:",forControlEvents: UIControlEvents.ValueChanged)
        uiSwitch.center = self.view.center
        self.view.addSubview(uiSwitch)
    }

    // MARK: 用户点击UISwitch
    func switchValueChanged(uiSwitch: UISwitch) {
        self.title = "UISwitch:\(uiSwitch.on)"
    }

    // MARK: - UIActivityIndicatorView
    private func initUIActivityIndicatorView() {
        let activityIndicatorView = UIActivityIndicatorView(frame: CGRectMake(0,50,50))//指定进度轮的大小
        activityIndicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge// 显示样式
        activityIndicatorView.backgroundColor = UIColor.greenColor()// 背景色
        activityIndicatorView.alpha = 0.5// 透明度
        //设置背景为圆角矩形
        activityIndicatorView.layer.cornerRadius = 6;
        activityIndicatorView.layer.masksToBounds = true;
        activityIndicatorView.startAnimating()// 开始
        activityIndicatorView.center = self.view.center
        self.view.addSubview(activityIndicatorView)
    }

    // MARK: - UIProgressView
    private func initUIProgressView() {
        let progressView = UIProgressView(frame: CGRectMake(0,150,5))
        progressView.progressViewStyle = UIProgressViewStyle.Default// 进度条样式
        progressView.center = self.view.center
        self.view.addSubview(progressView)
        // 0.5秒触发一次
        let timer = NSTimer.scheduledTimerWithTimeInterval(0.1,target: self,selector: "changeNSTimer:",userInfo: progressView,repeats: true)
        timer.fire()// 启动
    }

    // MARK: - UIPageControl
    private func initUIPageControl() {
        let pageControl = UIPageControl(frame: CGRectMake(0,100,37))
        pageControl.numberOfPages = 10// 默认10页
        pageControl.currentPage = 1// 选中第1页
        pageControl.pageIndicatorTintColor = UIColor.greenColor()// 默认背景色
        pageControl.currentPageIndicatorTintColor = UIColor.blueColor()// 选中时背景色
        pageControl.center = self.view.center
        self.view.addSubview(pageControl)
        // 0.5秒触发一次
        let timer = NSTimer.scheduledTimerWithTimeInterval(0.5,userInfo: pageControl,repeats: true)
        timer.fire()// 启动
    }

    // MARK: - UIStepper
    private func initUIStepper() {
        let stepper = UIStepper(frame: CGRectMake(0,50))
        stepper.maximumValue = 10// 最大
        stepper.minimumValue = 0// 最小
        stepper.value = 5// 默认
        stepper.stepValue = 0.1// 每次增加
        stepper.continuous = true// 按住不放来连续更改数值
        stepper.wraps = true// 是否循环(到最大值时再增加数值最从最小值开始)
        stepper.addTarget(self,action: "stepperValueChanged:",forControlEvents: UIControlEvents.ValueChanged)
        stepper.center = self.view.center
        self.view.addSubview(stepper)
    }

    // MARK: 用户点击UIStepper
    func stepperValueChanged(stepper: UIStepper) {
        self.title = "UIStepper:\(stepper.value)"
    }

    // MARK: - UIImageView
    private func initUIImageView() {
        let image = UIImage(named: "tab_1")
        let imageView = UIImageView(image: image)
        println("\(imageView.frame)")
        imageView.center = self.view.center
        self.view.addSubview(imageView)
        self.view.backgroundColor = UIColor.lightGrayColor()
    }

    // MARK: - UITextView
    private func initUITextView() {
        let textView = UITextView(frame: CGRectMake(0,self.width-30,400),textContainer:nil)
        textView.delegate = self
        textView.font = UIFont.systemFontOfSize(14)
        textView.textAlignment = NSTextAlignment.Left// 对齐方式
        textView.layer.borderWidth = 1// 边宽
        textView.layer.borderColor = UIColor.lightGrayColor().CGColor// 边的颜色
        textView.layer.cornerRadius = 5// 圆角
        self.inputAccessoryView(textView)// 完成按钮放在键盘上方
        textView.center = self.view.center
        self.view.addSubview(textView)
    }

    // MARK: - UITextViewDelegate
    func textViewDidEndEditing(textView: UITextView) {
        println("UITextView: \(textView.text)")
    }

    // MARK: - UIDatePicker
    private func initUIDatePicker() {
        let datePicker = UIDatePicker(frame: CGRectMake(0,self.width,400))
        datePicker.datePickerMode = UIDatePickerMode.DateAndTime //设置样式,当前设为同时显示日期和时间
        datePicker.minuteInterval = 5// 设置分钟表盘的时间间隔(必须能让60整除,默认是1分钟)
        datePicker.date = NSDate()// 默认日期
        datePicker.addTarget(self,action: "datePickerValueChanged:",forControlEvents: UIControlEvents.ValueChanged)
        // 设置日期范围(超过日期范围,会回滚到最近的有效日期)
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        datePicker.maximumDate = dateFormatter.dateFromString("2015-05-16 08:00:00")
        datePicker.minimumDate = dateFormatter.dateFromString("2015-07-16 08:00:00")
        // datePicker.setDate(NSDate(),animated: true)// 回到默认日期
        datePicker.center = self.view.center
        self.view.addSubview(datePicker)
    }

    // MARK: 用户选中UIDatePicker
    func datePickerValueChanged(datePicker: UIDatePicker) {
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm"
        self.title = "\(dateFormatter.stringFromDate(datePicker.date))"
    }

    // MARK: - UIPickerView
    private func initUIPickerView() {
        // 数据源
        self.dataArray.append(["0","1","3","4","5","6","7","8","9"])
        self.dataArray.append(["0","9"])
        let pickerView = UIPickerView(frame: CGRectMake(0,400))
        pickerView.dataSource = self
        pickerView.delegate = self
        pickerView.showsSelectionIndicator = true
        pickerView.center = self.view.center
        self.view.addSubview(pickerView)
    }

    // MARK: UIPickerViewDataSource
    // MARK: 列数
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {

        return self.dataArray.count
    }

    // MARK: 行数
    func pickerView(pickerView: UIPickerView,numberOfRowsInComponent component: Int) -> Int {
        return self.dataArray[component].count
    }

    // MARK: UIPickerViewDelegate
    // MARK: 列宽
    func pickerView(pickerView: UIPickerView,widthForComponent component: Int) -> CGFloat {
        return 40
    }

    // MARK: 行高
    func pickerView(pickerView: UIPickerView,rowHeightForComponent component: Int) -> CGFloat {
        return 44
    }

    // MARK: 每行每列显示的数据
    func pickerView(pickerView: UIPickerView,titleForRow row: Int,forComponent component: Int) -> String! {
        // 也可以实现func pickerView(pickerView: UIPickerView,viewForRow row: Int,forComponent component: Int,reusingView view: UIView!) -> UIView 二者取其一
        let array: Array = self.dataArray[component]
        return array[row]
    }

    // MARK: 用户选中UIPickerView
    func pickerView(pickerView: UIPickerView,didSelectRow row: Int,inComponent component: Int) {
        println("\(component)-\(row)")
        let first = self.dataArray[0][pickerView.selectedRowInComponent(0)]
        let second = self.dataArray[1][pickerView.selectedRowInComponent(1)]
        self.title = "UIPickerView:\(first)\(second)"
    }

    // MARK: - UIAlertView
    private func initUIAlertView() {
        let alertView = UIAlertView(title: "UIAlertView",message: "阳君测试",delegate: self,cancelButtonTitle: "取消")
        // 增加其他按钮
        alertView.addButtonWithTitle("1")
        alertView.addButtonWithTitle("2")
        alertView.show()// 显示
    }

    // MARK: UIAlertViewDelegate
    func alertView(alertView: UIAlertView,clickedButtonAtIndex buttonIndex: Int) {
        // 判断是否点击取消按钮
        if (alertView.cancelButtonIndex == buttonIndex) {
            return
        }
        self.title = "UIAlertView:\(buttonIndex)"
    }

    // MARK: - UIActionSheet
    private func initUIActionSheet() {
        let actionSheet = UIActionSheet()
        actionSheet.title = "UIActionSheet"
        actionSheet.addButtonWithTitle("默认")// 添加按钮
        actionSheet.addButtonWithTitle("显著")// 添加显著按钮
        actionSheet.addButtonWithTitle("取消")// 添加取消按钮
        actionSheet.destructiveButtonIndex = 1// 显著按钮的位置
        actionSheet.cancelButtonIndex = actionSheet.numberOfButtons - 1// 取消按钮的位置
        actionSheet.delegate = self
        actionSheet.showInView(self.view.window)// 显示
    }

    // MARK: UIActionSheetDelegate
    func actionSheet(actionSheet: UIActionSheet,clickedButtonAtIndex buttonIndex: Int) {
        // 判断是否点击取消按钮
        if (actionSheet.cancelButtonIndex == buttonIndex) {
            return
        }
        self.title = "UIActionSheet:\(buttonIndex)"
    }

    // MARK: - 键盘上方添加确定按钮
    private func inputAccessoryView(view: UIView) {
        // 键盘上方的按钮
        let topView:UIToolbar = UIToolbar(frame: CGRectMake(0,30))
        let spaceButton: UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace,target: nil,action: nil)//定义两个flexibleSpace的button,放在toolBar上,这样完成按钮就会在最右边
        let doneButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done,action: "onClickDone:")//定义完成按钮
        topView.items = [spaceButton,spaceButton,doneButton] //在toolBar上加上这些按钮

        // UITextView加确定按钮
        let textView:UITextView? = view as? UITextView
        textView?.inputAccessoryView = topView
        // UITextField加确定按钮
        let textField:UITextField? = view as? UITextField
        textField?.inputAccessoryView = topView
    }

    // 点击完成
    func onClickDone(button: UIBarButtonItem){
        self.view.endEditing(true)// 关闭键盘
    }

    // MARK: - 时间触发器
    func changeNSTimer(timer: NSTimer) {
        let progressView: UIProgressView? = timer.userInfo as? UIProgressView
        let pageControl: UIPageControl? = timer.userInfo as? UIPageControl
        if (progressView != nil) {
            var progress = progressView!.progress
            progress = progress == 1 ? 0 : progress + 0.01
            progressView!.progress = progress
            self.title =  Nsstring(format: "UIProgressView:%.2f",progress) as String
        } else if (pageControl != nil) {
            var currentPage = pageControl!.currentPage
            currentPage = currentPage == pageControl!.numberOfPages - 1 ? 0 : currentPage + 1
            pageControl!.currentPage = currentPage
            self.title = "UIProgressView:\(currentPage)"
        }
    }

}

UI基础控件 Swift的更多相关文章

  1. ios – DatePicker包含Year

    我在我的应用程序中实现了dataPicker.但它只显示月,日,小时.我怎么能在日期选择器中添加年份.任何的想法?

  2. ios – 将图像图标添加到UIPickerView行

    我看了看网上的内容并没有找到太多!我想知道你如何将图像放在UIPicker中,以便每个行都有不同的图像.解决方法

  3. iOS 5 – 将UIDatePicker最小日期设置为“今天”

    我知道如何将UIDatePicker中的最大和最小日期设置为某个日期,我想知道是否可以这样做,所以最小日期始终是“今天”日期.在我的应用程序中,用户输入过去的日期是没有意义的,只是为了让他们添加一个今天或将来的日期.解决方法将最短日期设置为现在,将显示日期设置为2秒:在初始化Nib或在重新使用时为视图控制器设置数据时执行此操作.您也可以在viewWillAppear中执行此操作.额外积分:您可以添加一种IBAction方法,巧妙地鼓励用户不要选择错误的建议日期:

  4. ios – 减少UIPickerView组件之间的空间

    我想减少UIPickerView中不同组件之间的空间.实际上我想构建一个类似于iPhone手表中的Timer的选择器视图.我相信有4个组成部分.首先是小时组件(0,1,2…….59),第四个是小组件.如何增加小时和分钟组件之间的比较空间.我不想在每小时值和每分钟值使用小时和分钟.解决方法您必须使用widthForComponent委托方法.以下是Swift的一个例子.找到objective-c等价物.

  5. ios – 在greift中将gregorian datepicker转换为波斯语日期选择器?

    解决方法您需要设置日历,而不是dateFormat:如果要更改语言,还必须设置语言环境属性:此外,正如问题注释所述,您正在使用NSDateFormatter,而不是代码中的UIDatePicker.幸运的是,答案仍然是正确的;UIDatePicker还有一个日历属性,您可以设置该属性来实现此目标.

  6. UIPickerView具有iOS7中的自定义视图

    我有一个带有UIPickerView的应用程序.我使用该方法返回自定义视图它在iOS6中看起来很好.在iOS7中,没有太多的屏幕截图如下.请注意,在没有焦点的单元格中,第二列和第三列重叠.中央排是正确的.有什么建议么?解决方法看来,出于奇怪的原因,如果任何列的宽度都高于选择器视图宽度的1/3,则布局会中断.所以如果你有一个320像素宽的选择器视图106或更少正在工作,但是107或更高版本是错误的,无论你是否有2,3,4…

  7. ios – 如果用户以编程方式命中UITextfield,如何显示UIDatePicker

    只有当用户UITextField被点击时,才想显示UIDatePicker.当选择日期时,它应该显示在相同的UITextField中.我想以编程方式实现UIDatePicker.我知道如何编写UITextField的代码.我甚至不知道如何调用UIDatePicker.有人可以帮我吗出生日期解决方法最简单的方法是实现datePicker如下:创建datePicker:然后将datePicker链接到textfieldinputView:最后,您可以在选择日期时捕获该操作,并将日期转换为字符串,以在textF

  8. iOS – 填充静态UIPickerView

    我有一个配置文件表单作为iOS应用程序注册过程的一部分.我想使用一个“下拉”菜单,如性别,标题,dob等项目.每个数据将是静态的–我将使用UIPickerView实现–但我的问题是–我需要创建数组和数据委托来填充每个单独的选择器,还是有一个更简单的方法来应用静态数据?解决方法没有代表你可以做吗?

  9. ios – 用UIDatePicker替换UITextField输入

    ,我有一个很大的例外–我不能让选择器消失!我尝试注册事件UIControlEventTouchUpOutside,但似乎这不是由选择器生成的.如何识别用户已完成选择日期?还有,有没有办法禁止用户直接输入UITextField?我想强迫他们使用选择器.我看到这篇文章“DisableblinkingcursorinUITextField?”,但还有另一种方式吗?

  10. ios – 以编程方式创建和显示UIPickerView

    我试图以编程方式创建UIPickerView并将其显示为文本字段的firstResponder,但是,选择器视图未显示.textField连接到接口构建器中的对象,但是正在以编程方式创建pickerView.为什么我在运行应用程序时看不到这个pickerView?

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部