Ios UITextView在iPhone 5/5s上切断文本,但在iPhone 6中不切断文本

Ios UITextView在iPhone 5/5s上切断文本,但在iPhone 6中不切断文本,ios,swift,formatting,uitextview,nsattributedstring,Ios,Swift,Formatting,Uitextview,Nsattributedstring,我正在为一个属性化字符串调整UITextView的大小,该字符串是我根据API的响应创建的,该API最多可以有三个不同的属性;一般条款、装运条款和退货条款。如果缺少一个属性,我不会在最终文本中显示该属性。在iPhone6上,所有内容都以应有的方式显示,但在iPhone5/5s上,最后几行文字被剪掉。textView正在正确调整大小,但直到最后几行才显示所有文本。我希望我能展示照片,但显然我没有足够的代表这么做。我搜索过的所有其他类似问题都不完全相同,而且这些解决方案似乎都无法解决问题。这是我用S

我正在为一个属性化字符串调整UITextView的大小,该字符串是我根据API的响应创建的,该API最多可以有三个不同的属性;一般条款、装运条款和退货条款。如果缺少一个属性,我不会在最终文本中显示该属性。在iPhone6上,所有内容都以应有的方式显示,但在iPhone5/5s上,最后几行文字被剪掉。textView正在正确调整大小,但直到最后几行才显示所有文本。我希望我能展示照片,但显然我没有足够的代表这么做。我搜索过的所有其他类似问题都不完全相同,而且这些解决方案似乎都无法解决问题。这是我用Swift编写的代码,用于创建属性字符串和调整textView的大小。任何帮助都将不胜感激

这是格式化属性字符串的代码

var termStrings = String()

                    if (!generalString.isEqualToString("")) {
                        termStrings += "GENERAL:\n\(generalString)\n\n"
                    }

                    if (!shippingString.isEqualToString("")) {
                        termStrings += "SHIPPING:\n\(shippingString)\n\n"
                    }

                    if (!returnString.isEqualToString("")) {
                        termStrings += "RETURNS:\n\(returnString)"
                    }

                    var newNSString = termStrings as NSString

                    var attTermString = NSMutableAttributedString(string: termStrings as String)

                    let boldAttribute = [NSForegroundColorAttributeName: UIColor.blackColor(), NSFontAttributeName: UIFont.boldSystemFontOfSize(14)]
                    let subtitleAttribute = [NSForegroundColorAttributeName: UIColor.blackColor(), NSFontAttributeName: UIFont.systemFontOfSize(12)]
                    let underlineAttribute = [NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle]
                    var paragraphStyle = NSMutableParagraphStyle()
                    paragraphStyle.lineSpacing = 5.0

                    if (!generalString.isEqualToString("")) {
                        attTermString.addAttributes(boldAttribute, range: newNSString.rangeOfString("GENERAL:"))
                        attTermString.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.StyleSingle.rawValue, range: newNSString.rangeOfString("GENERAL:"))
                        attTermString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: newNSString.rangeOfString("GENERAL:\n"))
                        attTermString.addAttributes(subtitleAttribute, range: newNSString.rangeOfString("\(generalString)"))
                    }

                    if (!shippingString.isEqualToString("")) {
                        attTermString.addAttributes(boldAttribute, range: newNSString.rangeOfString("SHIPPING:"))
                        attTermString.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.StyleSingle.rawValue, range: newNSString.rangeOfString("SHIPPING:"))
                        attTermString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: newNSString.rangeOfString("SHIPPING:\n"))
                        attTermString.addAttributes(subtitleAttribute, range: newNSString.rangeOfString("\(shippingString)"))
                    }

                    if (!returnString.isEqualToString("")) {
                        attTermString.addAttributes(boldAttribute, range: newNSString.rangeOfString("RETURNS:"))
                        attTermString.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.StyleSingle.rawValue, range: newNSString.rangeOfString("RETURNS:"))
                        attTermString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: newNSString.rangeOfString("RETURNS:\n"))
                        attTermString.addAttributes(subtitleAttribute, range: newNSString.rangeOfString("\(returnString)"))
                    }

                    changeTextViewHeight(attTermString, width: textView.frame.size.width)
这是我调整文本视图大小的代码

func changeTextViewHeight(attributedString: NSMutableAttributedString, width: CGFloat) {
    textView.attributedText = attributedString
    var newSize: CGSize  = textView.sizeThatFits(CGSizeMake(width, CGFloat(FLT_MAX)))
    var newFrame: CGRect = textView.frame
    newFrame.size = CGSizeMake(CGFloat(fmaxf((Float)(newSize.width), (Float)(width))), newSize.height)
    textView.frame = newFrame
}
解决步骤(这将在5/5s内将UITextView滚动到顶部)

  • 禁用UITextView滚动视图
  • 将scrollRectToVisible设置为Enable
  • UITextView滚动条
Swift 3:

self.yourTextView.isScrollEnabled = false
let rect:CGRect = CGRect(x: 0, y: 0, width: 1, height: 1)
self.yourTextView.scrollRectToVisible(rect, animated: false)
self.yourTextView.isScrollEnabled = true
这对我很有效。

解决步骤(这将在5/5s内将UITextView滚动到顶部

  • 禁用UITextView滚动视图
  • 将scrollRectToVisible设置为Enable
  • UITextView滚动条
Swift 3:

self.yourTextView.isScrollEnabled = false
let rect:CGRect = CGRect(x: 0, y: 0, width: 1, height: 1)
self.yourTextView.scrollRectToVisible(rect, animated: false)
self.yourTextView.isScrollEnabled = true

这对我来说很有效。

根据我的假设,您可能在iPhone 5/5s上通过了错误的
Width
,或者您为iPhone 6设计了屏幕。因此,只要调试调整文本视图大小时传递的宽度,您就会得到解决方案。我会尝试一下,但文本不会离开屏幕或其他任何东西,这让我相信所有内容的大小都是正确的。不过我会记录宽度。谢谢。根据我的假设,您可能对iPhone5/5s的宽度传递了错误的
Width
,或者您为iPhone6设计了屏幕。因此,只要调试调整文本视图大小时传递的宽度,您就会得到解决方案。我会尝试一下,但文本不会离开屏幕或其他任何东西,这让我相信所有内容的大小都是正确的。不过我会记录宽度。非常感谢。