iOS-如何预定义TextView行高度

iOS-如何预定义TextView行高度,ios,swift3,uitextview,Ios,Swift3,Uitextview,我有一些UITextView声明如下 lazy var inputTextView: UITextView = { let tv = UITextView() tv.tintColor = UIColor.darkGray tv.font = UIFont.systemFont(ofSize: 17) tv.backgroundColor = UIColor.white return tv }() 我一直在搜索如何预定义此UITextView的行距,因此

我有一些
UITextView
声明如下

lazy var inputTextView: UITextView = {
    let tv = UITextView()
    tv.tintColor = UIColor.darkGray
    tv.font = UIFont.systemFont(ofSize: 17)
    tv.backgroundColor = UIColor.white
    return tv
}()
我一直在搜索如何预定义此
UITextView
的行距,因此每当我编写长文本时,当它到达行尾并转到下一行时,间距将大于默认值。

我尝试在
UITextView
声明中使用以下内容:

let style = NSMutableParagraphStyle()
style.lineSpacing = 40
let attributes = [NSParagraphStyleAttributeName : style]
tv.attributedText = NSAttributedString(string: "", attributes:attributes)
这将成为:

lazy var inputTextView: UITextView = {
    let tv = UITextView()
    tv.tintColor = UIColor.darkGray
    tv.font = UIFont.systemFont(ofSize: 17)
    tv.backgroundColor = UIColor.white
    let style = NSMutableParagraphStyle()
    style.lineSpacing = 40
    let attributes = [NSParagraphStyleAttributeName : style]
    tv.attributedText = NSAttributedString(string: "", attributes:attributes)
    return tv
}()
只有在
attributedText
属性中预插入一些文本时,它才起作用,但由于文本在开始时是空的,因此它将不使用这些属性,并将其设置为默认值

当我在
UITextView
中写作时,如何增加默认行高度并保持它


谢谢;)

我解决了这个问题。问题是我不应该根据属性设置
attributedText
,因为当我们开始键入属性时,属性就消失了

相反,我将
typingAttributes
设置为与我所希望的相等,这样每当我键入属性时都不会丢失

最终版本:

lazy var inputTextView: UITextView = {
    let tv = UITextView()
    tv.tintColor = UIColor.darkGray
    tv.font = UIFont.systemFont(ofSize: 17)
    tv.backgroundColor = UIColor.white
    let spacing = NSMutableParagraphStyle()
    spacing.lineSpacing = 4
    let attr = [NSParagraphStyleAttributeName : spacing]
    tv.typingAttributes = attr
    return tv
}()

我解决了这个问题。问题是我不应该根据属性设置
attributedText
,因为当我们开始键入属性时,属性就消失了

相反,我将
typingAttributes
设置为与我所希望的相等,这样每当我键入属性时都不会丢失

最终版本:

lazy var inputTextView: UITextView = {
    let tv = UITextView()
    tv.tintColor = UIColor.darkGray
    tv.font = UIFont.systemFont(ofSize: 17)
    tv.backgroundColor = UIColor.white
    let spacing = NSMutableParagraphStyle()
    spacing.lineSpacing = 4
    let attr = [NSParagraphStyleAttributeName : spacing]
    tv.typingAttributes = attr
    return tv
}()

那些正在寻找Swift 4版本的人

let spacing = NSMutableParagraphStyle()
spacing.lineSpacing = 7
spacing.alignment = .center
textView.typingAttributes = [NSAttributedStringKey.paragraphStyle.rawValue: spacing,
                             NSAttributedStringKey.font.rawValue: UIFont.systemFont(ofSize: 14)]
在iOS 11中,苹果会清除每个字符后的文本属性。所以你必须在

func textViewShouldBeginEditing(_ textView: UITextView) -> Bool

那些正在寻找Swift 4版本的人

let spacing = NSMutableParagraphStyle()
spacing.lineSpacing = 7
spacing.alignment = .center
textView.typingAttributes = [NSAttributedStringKey.paragraphStyle.rawValue: spacing,
                             NSAttributedStringKey.font.rawValue: UIFont.systemFont(ofSize: 14)]
在iOS 11中,苹果会清除每个字符后的文本属性。所以你必须在

func textViewShouldBeginEditing(_ textView: UITextView) -> Bool

有关于如何实现的提示吗?有关于如何实现的提示吗?