【发布时间】:2015-07-16 13:24:23
【问题描述】:
我知道,我的标题令人困惑,但我的问题也让我困惑。 :-(
在 ReadMoreTextView 类中,我有一个可以填充的 NSAttributedString 类型的 var,但是当我阅读它时,它是 nil!? 好的,我必须用我糟糕的英语声明这个和那个;-)
我想使用 Ilya Puchka 的恕我直言非常好的解决方案“ReadMoreTextView”来“压缩”一个大型 UITextView:
我想使用NSAttributedString,因为我想用红色或蓝色“突出显示”“阅读更多”。
为此我使用这个初始化:
import UIKit
class ViewController: UIViewController {
@IBOutlet var textView: ReadMoreTextView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let text = "und ein neuer text Lorem ipsum dolor..."
let attributedString = NSAttributedString(string:text as String)
// 1) 2) 3)
textView = ReadMoreTextView(maximumNumberOfLines: 3, attributedTrimText: attributedString, shouldTrim: true)
...
}
那里
- 是“压缩”视图中的前导行数,
- 是 NSAttributedString 和
- 是一个标志,如果应该修剪文本
这是课程:
class ReadMoreTextView: UITextView {
override init(frame: CGRect, textContainer: NSTextContainer?) {
super.init(frame: frame, textContainer: textContainer)
scrollEnabled = false
editable = false
}
convenience init(maximumNumberOfLines: Int, attributedTrimText: NSAttributedString?, shouldTrim: Bool) {
self.init()
self.maximumNumberOfLines = maximumNumberOfLines // 1)
self.attributedTrimText = attributedTrimText // 2)
println(attributedTrimText) // of course displays the attributedTrimText
self.shouldTrim = shouldTrim // 3)
}
@IBInspectable
var maximumNumberOfLines: Int = 0 {
didSet { setNeedsLayout() }
}
var attributedTrimText: NSAttributedString? {
didSet { setNeedsLayout() }
}
@IBInspectable
var shouldTrim: Bool = false {
didSet { setNeedsLayout() }
}
然后我在 shouldTrim (最后调用)的断点处做了一个“po属性TrimText”,结果是nil?!
所以由于attributeTrimText中的nil,textView在显示的时候是空的! :-(
找不到原因……
【问题讨论】:
标签: xcode swift properties