您的位置:首页 > 移动开发 > Swift

Swift基础(十七)UITextView

2016-07-25 09:07 387 查看
class RootViewController: UIViewController, UITextViewDelegate {

    var textView: UITextView? = nil

    

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view.

        // 创建UITextView 对象

        textView = UITextView(frame: CGRectMake(10.0, 120.0, 300.0, 400.0))

        textView!.delegate = self

        // 为了方便看到效果,设置背景颜色

        textView!.backgroundColor = UIColor.grayColor()

        // 添加到视图上

        self.view.addSubview(textView!)

        self .createSubViews(textView!)

    }

    

    private func createSubViews(textView: UITextView) {

        // 设置textView里面的字体颜色

        textView.textColor = UIColor.greenColor()

        // 设置文本字体

        textView.font = UIFont.systemFontOfSize(18) // 使用系统默认字体,指定18号字号

        textView.font = UIFont(name: "Helvetica", size: 18) // 指定字体,指定字号

        // 设置背景颜色

        textView.backgroundColor = UIColor.grayColor()

        // 设置显示内容

        textView.text = "爱上了肯德基覅文化大非农破我问哈的覅偶案例看是否帕里是否经常骂跑了分骄傲是碰到了政府  按实际富婆查完了;二十分骄傲我刷屏了奥IP金佛啊手按时交付的每次哦啊跑来玩;是阿双方寂寞去品味IE来得及佛往前爬色积分都暗恋我S怕我了快速二级分工为蓝色见佛牌我拉骚扰或多个安慰朴素减肥颇为了解啥狗屁我拉身份婆IQ礼物案件收人头费顽皮uasjktfpwiawstkpf前排欧文IE通缉犯我饿死了独家"

        // 文本对齐方式

        textView.textAlignment = .Right

        // 文本视图设置圆角

        textView.layer.masksToBounds = true

        textView.layer.cornerRadius = 20

        // 文字不能选择,可以防止用户复制文字

        textView.selectable = true

        // 返回键的类型

        textView.returnKeyType = UIReturnKeyType.Default

        // 键盘类型

        textView.keyboardType = UIKeyboardType.Default

        // 是否可以滚动

        textView.scrollEnabled = true

        // 自适应高度

        textView.autoresizingMask = .FlexibleHeight

        

        // 设置富文本

        var attributeString: NSMutableAttributedString = NSMutableAttributedString(string: "暗红色的李开复和你气温U盾上空间划分哪位IE速度快解放和年期为卡洛斯等级划分内切娃开始的计划来烦你安静牛肉丝U盾快捷回复你忘记爱恩还是电脑覅快加我哈是你的覅看见合适的那些奥回复你玩儿啥客户给你发我我按时到今年非文件看后视镜的加菲猫钱偶我问题居然没覅偶二手的价格方面我儿时的u3tj4erosdgjowperjgdowehsj3位我人世间的分工为如今为收件人【我二姐说都干么的")

        // 设置字体颜色

        attributeString.addAttribute(NSForegroundColorAttributeName, value: UIColor.greenColor(), range: NSMakeRange(0, attributeString.length))

        // 文本所有字符字体HelveticaNeue,16号

        attributeString.addAttribute(NSFontAttributeName, value: UIFont(name: "HelveticaNeue", size: 16)!, range: NSMakeRange(0, attributeString.length))

        // 文本0开始5个字符字体HelveticaNeue,26号字体

        attributeString.addAttribute(NSFontAttributeName, value: UIFont(name: "HelveticaNeue", size: 26)!, range: NSMakeRange(0, 5))

        // 设置字体颜色

        attributeString.addAttribute(NSForegroundColorAttributeName, value: UIColor.whiteColor(), range: NSMakeRange(0, 3))

        // 设置文字背景颜色

        attributeString.addAttribute(NSBackgroundColorAttributeName, value: UIColor.orangeColor(), range: NSMakeRange(3, 3))

        // 赋值富文本

        textView.attributedText = attributeString

        // 选中一段文本

        textView.becomeFirstResponder()

        textView.selectedRange = NSMakeRange(30, 10)

        // 获取内容整体高度

        var height: CGFloat = textView.contentSize.height

        

        // 定义文本视图中的菜单

        let menuItem1: UIMenuItem = UIMenuItem(title: "分享到微信", action: "shareWXMenu:")

        let menuItem2: UIMenuItem = UIMenuItem(title: "分享到微博", action: "shareWBMenu:")

        // 获取菜单控制器

        let menuController: UIMenuController = UIMenuController.sharedMenuController()

        menuController.menuItems = [menuItem1, menuItem2]

        

        // 使用selectedRange属性可以获取当前文字选择的范文

        let range = textView.selectedRange

        // 可以使用scrollRangeToVisible属性指定光标的位置

        textView.scrollRangeToVisible(NSMakeRange(0, 60))

    }

    

    override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {

        // 判断有没有选中文字

        // 如果选中,输出选中的文本

        let isSelect: Bool = textView!.selectedRange.length > 0

        if (action == "shareWXMenu:" && isSelect) {

            return true

        } else if (action == "shareWBMenu:" && isSelect) {

            return true

        }

        return false // 不显示系统的菜单,改成true对比一下效果

    }

    

    // 实现菜单按钮事件

    // 分享到微信

    func shareWXMenu(sender: AnyObject?) {

        if textView?.selectedRange.length > 0 {

            print(((textView?.text)! as NSString).substringWithRange(textView!.selectedRange))

        }

        print("这里实现分享到微信功能")

    }

    

    // 分享到微博

    func shareWBMenu() {

        print("这里实现分享到微博功能")

    }

    

    // 如果想在textView里不用回车键,可以把回车键当做退出键的相应键

    func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {

        // 文本视图内容改变时,触发本方法,能得到改变的坐标和改变的内容

        // 如果是回车符号,则textView释放第一响应值,返回false

        if (text == "\n") {

            textView.resignFirstResponder()

            return false

        }

        return true

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息