设置文本字体大小和文本UITextView的垂直中心

时间:2016-06-19 12:49:29

标签: ios swift uitextview bounds

我已经实现了以下类来将我的文本集中在我的UITextView

class VerticallyCenteredTextView: UITextView {
override var contentSize: CGSize {
    didSet {
        var topCorrection = (bounds.size.height - contentSize.height * zoomScale) / 2.0
        topCorrection = max(0, topCorrection)
        contentInset = UIEdgeInsets(top: topCorrection, left: 0, bottom: 0, right: 0)
    }
} 
}

我还实现了以下方法,根据UITextView中的空间量调整字体大小:

func updateTextFont(textView : UITextView, minSize : CGFloat, maxSize : CGFloat) {
if (textView.text.isEmpty || CGSizeEqualToSize(textView.bounds.size, CGSizeZero)) {
    return;
}

let textViewSize = textView.frame.size;
let fixedWidth = textViewSize.width;
let expectSize = textView.sizeThatFits(CGSizeMake(fixedWidth, CGFloat(MAXFLOAT)));

var expectFont = textView.font;
if (expectSize.height > textViewSize.height) {
    while (textView.sizeThatFits(CGSizeMake(fixedWidth, CGFloat(MAXFLOAT))).height > textViewSize.height && (textView.font!.pointSize > CGFloat(minSize))) {
        expectFont = textView.font!.fontWithSize(textView.font!.pointSize - 1)
        textView.font = expectFont
    }
}
else {
    while (textView.sizeThatFits(CGSizeMake(fixedWidth, CGFloat(MAXFLOAT))).height < textViewSize.height && (textView.font!.pointSize < CGFloat(maxSize))) {
        expectFont = textView.font;
        textView.font = textView.font!.fontWithSize(textView.font!.pointSize + 1)
    }
    textView.font = expectFont;
}
}

现在这个方法适用于普通UITextView,但是由于VerticallyCenteredTextView初始化时应用的边缘插入,它对我的​​VerticallyCenteredTextView完全不起作用,在可以调用updateTextFont函数之前。有没有办法我可以将这两个代码段组合起来,以获得UITextView根据可用空间量调整文本字体并将文本垂直居中UITextView

0 个答案:

没有答案