Swift基础(十四)UITextField

class RootViewController: UIViewController, UITextFieldDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        self.view.backgroundColor = UIColor.whiteColor()
        // 初始化UITextField控件
        var textField = UITextField(frame: CGRectMake(10, 100, 300, 40))
        // 为方便看到效果,设置一下背景色
        textField.backgroundColor = UIColor.redColor()
        // 添加到视图上
        self.view.addSubview(textField)
        
        // 文本框常用属性
        // 设置显示文本
        textField.text = "akjdhfajalsdjfmqowe;ldjfm";
        // 获取文本框内容
        var textString = textField.text
        // 设置背景色
        textField.backgroundColor = UIColor.yellowColor();
        // 设置背景图
        textField.background = UIImage(named: "textImage")
        // 设置富文本
        var attributeStr: NSMutableAttributedString = NSMutableAttributedString(string: "adfqwedfa")
        // 文本0开始5个字符字体HeveticaNeue,16号
        attributeStr.addAttribute(NSFontAttributeName, value: UIFont(name: "Helvetica Neue", size: 16)!, range: NSMakeRange(0, 4))
        // 设置字体颜色
        attributeStr.addAttribute(NSFontAttributeName, value: UIColor.redColor(), range: NSMakeRange(4, 2))
        // 设置文字背景颜色
        attributeStr.addAttribute(NSBackgroundColorAttributeName, value: UIColor.greenColor(), range: NSMakeRange(0, 4))
        
//        textField.attributedText = attributeStr
        
        // 设置文本字体
        textField.font = UIFont.systemFontOfSize(18) // 使用系统默认字体,指定18号字号
        textField.font = UIFont(name: "Helvetica", size: 18); // 指定字体,指定字号
        // 设置文本颜色
        textField.textColor = UIColor.magentaColor()
        // 设置文本文字对齐方式,对齐属性有一下几种,默认是左对齐
        // Left: 左对齐
        // Center: 居中
        // Right: 右对齐
        // Justified: 最后一行自然对齐
        // Natural: 默认对齐脚本
        textField.textAlignment = NSTextAlignment.Right;
        
        // 用contentVerticalAlignment属性设置垂直对齐方式
        // 向上对齐
        textField.contentVerticalAlignment = UIControlContentVerticalAlignment.Top
        // UIControlContentVerticalAlignment单词太长,可以简写成:
        // 向下对齐
        textField.contentVerticalAlignment = .Bottom
        // 垂直居中对齐
        textField.contentVerticalAlignment = .Center
        
        // 设置文本框样式,可分别看看效果
        // None
        // Line
        // Bezel
        // RoundedRect
        textField.borderStyle = .RoundedRect
        // 富文本占位符
        textField.attributedPlaceholder = attributeStr
        // 设置占位字符
        textField.placeholder = "请输入学校名称"
        // 最小字体
        textField.minimumFontSize = 10.0
        // 文本内容自动适应标签大小,默认是false
        textField.adjustsFontSizeToFitWidth = true;
        
        // 设置删除效果(文本框输入内容时,显示清除按钮-- × )
        // Never: 不显示清除按钮
        // WhileEditing: 编辑时才出现清除按钮
        // UnlessEditing: 完成编辑后才出现清除按钮
        // Always: 一直都显示清除按钮
        textField.clearButtonMode = .WhileEditing
        
        // 设置文本框编辑状态,默认true可以编辑
        textField.editing
        // 文本框是否可用,默认是true
        textField.enabled = true;
        // 开始输入时,清空文本框原有内容
        textField.clearsOnBeginEditing = true;
        
        // 创建左视图
        var leftView: UIView = UIView(frame: CGRectMake(0, 0, 40, 40))
        leftView.backgroundColor = UIColor.blackColor()
        textField.leftView = leftView;
        
        // 设置左视图显示类型
        // Never
        // WhileEditing
        // UnlessEditing
        // Always
        textField.leftViewMode = .WhileEditing // 开始编辑时显示
        
        // 创建右视图
        var rightView: UIView = UIView(frame: CGRectMake(260, 0, 40, 40));
        rightView.backgroundColor = UIColor.blackColor()
        textField.rightView = rightView;
        // 设置左视图显示类型
        // Never
        // WhileEditing
        // UnlessEditing
        // Always
        textField.rightViewMode = .UnlessEditing // 开始编辑时显示
        // 成为第一响应者,光标定位到该文本框
        textField.becomeFirstResponder()
        // 取消光标,释放键盘
        textField.resignFirstResponder()
        // 首字母是否大写
        /*
         enum UITextAutocapitalizationType : Int {
            case None 不自动大写
            case words 单词首字母大写
            case Sentences 句子的首字母大写
            case AllCheracters 所有字母都大写
        }
         */
        textField.autocapitalizationType = .Words
       
        // 文本框代理
        // 指定代理人
        textField.delegate = self
        // 可以实现的协议方法
        /*
        @available(iOS 2.0, *)
        optional public func textFieldShouldBeginEditing(textField: UITextField) -> Bool // return NO to disallow editing.
        @available(iOS 2.0, *)
        optional public func textFieldDidBeginEditing(textField: UITextField) // became first responder
        @available(iOS 2.0, *)
        optional public func textFieldShouldEndEditing(textField: UITextField) -> Bool // return YES to allow editing to stop and to resign first responder status. NO to disallow the editing session to end
        @available(iOS 2.0, *)
        optional public func textFieldDidEndEditing(textField: UITextField) // may be called if forced even if shouldEndEditing returns NO (e.g. view removed from window) or endEditing:YES called
        
        @available(iOS 2.0, *)
        optional public func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool // return NO to not change text
        
        @available(iOS 2.0, *)
        optional public func textFieldShouldClear(textField: UITextField) -> Bool // called when clear button pressed. return NO to ignore (no notifications)
        @available(iOS 2.0, *)
        optional public func textFieldShouldReturn(textField: UITextField) -> Bool // called when 'return' key pressed. return NO to ignore.
        */
        
        // 文本框状态监听
        // UITextField具有3个通知类型:
        /*
        public let UITextFieldTextDidBeginEditingNotification: String
        public let UITextFieldTextDidEndEditingNotification: String
        public let UITextFieldTextDidChangeNotification: String
 */
        // 创建3个监听
        // 文本框开始编辑是,触发
        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("textDidBeginEditing"), name: UITextFieldTextDidBeginEditingNotification, object: nil)
        // 文本框编辑结束时,触发
        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("textDidEndEditing"), name: UITextFieldTextDidEndEditingNotification, object: nil)
        // 文本框内容改变时,触发
        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("textDidChange"), name: UITextFieldTextDidChangeNotification, object: nil)
        
        // 键盘知识
        // 键盘外观有3种
        /*
         enum UIKeyboardAppearance : Int {
            case Default 默认外观
            case Dark   深灰石墨色
            case Light  浅灰色
         }
         */
        textField.keyboardAppearance = .Default
        // 设置键盘完成的按钮样式
        /*
        enum UIReturnKeyType : Int {
            case Default 默认灰色按钮,标有Return
            case Go     标有Go的蓝色按钮
            case Google 标有Google的蓝色按钮,用于搜索
            case Join   标有Join的蓝色按钮
            case Next   标有Next的蓝色按钮
            case Route  标有Route的蓝色按钮
            case Search 标有Search的蓝色按钮
            case Send   标有Send的蓝色按钮
            case Yahoo  标有Yahoo的蓝色按钮
            case Done   标有Done的蓝色按钮
            case EmergencyCall 紧急呼叫按钮
         }
         */
        textField.returnKeyType = .Done
    }

    func textDidBeginEditing() {
        print("123")
    }
    
    func textDidEndEditing() {
        print("456")
    }
    
    func textDidChange() {
        print("789")
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【课程特点】1、231节大容量课程:包含了SwiftUI的大部分知识点,详细讲解SwiftUI的方方面面;2、15个超级精彩的实例:包含美食、理财、健身、教育、电子商务等各行业的App实例;3、创新的教学模式:手把手教您SwiftUI用户界面开发技术,一看就懂,一学就会;4、贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标;5、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间;6、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索;7、齐全的学习资料:提供所有课程的源码,在Xcode 11 + iOS 13环境下测试通过; 更好的应用,更少的代码!SwiftUI是苹果主推的下一代用户界面搭建技术,具有声明式语法、实时生成界面预览等特性,可以为苹果手机、苹果平板、苹果电脑、苹果电视、苹果手表五个平台搭建统一的用户界面。SwiftUI是一种创新、简单的iOS开发中的界面布局方案,可以通过Swift语言的强大功能,在所有的Apple平台上快速构建用户界面。 仅使用一组工具和API为任何Apple设备构建用户界面。SwiftUI具有易于阅读和自然编写的声明式Swift语法,可与新的Xcode设计工具无缝协作,使您的代码和设计**同步。自动支持动态类型、暗黑模式、本地化和可访问性,意味着您的**行SwiftUI代码已经是您编写过的非常强大的UI代码了。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值