多行可编辑文本:可编辑的UILabel?

时间:2016-06-26 05:37:42

标签: ios swift uilabel

我正在尝试创建一个可编辑文本的大图,但似乎有一个选项:使用一个小的UITextField。

我知道UILabels可以大而宽,但我不知道如何制作可编辑的UILabel。

我尝试使用UILabel属性和.layer方法,但似乎没有任何效果。有人建议我应该做什么吗?

总而言之,我正在寻找一条多行可编辑文本。

1 个答案:

答案 0 :(得分:2)

UITextView获胜!!

UITextViews允许对文本进行多行操作,如果使用UITextViewDelegate,它可以提供在单击textView时允许特定事物的方法等等!...

使用UITextView,您可以提供特定数量的行(如果您只想要3,则可以指定它),并且如果需要还提供超链接。

这是我有一个例子(稍微改了一下)来展示你的一个例子......

let textBox:UITextView = UITextView(frame: CGRect(x: firstBox.frame.width*0, y: firstBox.frame.height*0.375, width: firstBox.frame.width*1, height: firstBox.frame.height*0.5))
        textBox.backgroundColor = UIColor.clearColor()

        let websiteName = "http://stackoverflow.com/posts/38035564"
        textBox.text = "SO is an awesome coding site! Please visit\n\(websiteName)"

        //No need to set number of lines, it will auto set to as many as needed!
        textBox.editable = false
        textBox.selectable = true

        //Register the hyperlink
        textBox.dataDetectorTypes = UIDataDetectorTypes.All
        textBox.textColor = UIColor.grayColor()

        //Change only the hyperlink part
        let textRange = NSMakeRange(textBox.text.characters.count-websiteName.characters.count, websiteName.characters.count)
        let style = NSMutableParagraphStyle()
        style.alignment = NSTextAlignment.Center

        let attributedText = NSMutableAttributedString(string: textBox.text, attributes: [NSFontAttributeName:UIFont(
            name: (textBox.font?.fontName)!,
            size:13/15*fontSize)!,
            NSParagraphStyleAttributeName: style])
        attributedText.addAttribute(NSUnderlineStyleAttributeName , value:NSUnderlineStyle.StyleSingle.rawValue, range: textRange)
        textBox.attributedText = attributedText
        firstBox.addSubview(textBox)