设置内容高度后无法更新UITextView大小

亚历克斯·史

我需要的是在首次启动应用程序时显示的许可协议。简单的UITextView,文本后带有“同意”按钮。我需要它的大小等于屏幕大小,并且内容可以滚动。所有这些都发生在主ViewController的ViewDidLoad()方法中:

let text = "<p>very very long html text</p>"

var str = NSAttributedString()
do {
   str = try NSAttributedString(data: text.dataUsingEncoding 
   (NSUnicodeStringEncoding, allowLossyConversion: true)!,
   options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], 
   documentAttributes: nil)   
   }
   catch 
   {
       print(error)
   }

   let licenseView = UITextView(frame:CGRectMake(self.navigationController!.view.frame.origin.x,self.navigationController!.view.frame.origin.y, self.navigationController!.view.frame.size.width, self.navigationController!.view.frame.size.height))
   licenseView.attributedText = str

   licenseView.scrollEnabled = true
   licenseView.editable = false
   licenseView.selectable = true
   licenseView.dataDetectorTypes = .All

   let LVSize:CGSize = licenseView.sizeThatFits(CGSizeMake(licenseView.frame.size.width, CGFloat(FLT_MAX)))

licenseView的内容高度为1850.5。需要添加y位置等于1850.5的按钮。

   let button = UIButton(frame:CGRectMake(0, LVSize.height, 300, 50))
   button.setTitle("Agree", forState: .Normal)
   button.backgroundColor = UIColor.blueColor()
   licenseView.addSubview(button)

现在我们需要调整内容的大小以使按钮在文本后可见

   licenseView.contentSize = CGSizeMake(licenseView.frame.size.width, LVSize.height+300)
   licenseView.setNeedsDisplay()
   licenseView.layoutIfNeeded()


   self.navigationController!.view.addSubview(licenseView)

问题是contentSize已更改(如果我print(licenseView.contentSize)将输出(320.0, 2150.5)),但textView仍表现为其内容高度为1850.5-向下滚动时,我看到该按钮在可滚动区域之外。我错过了什么?

亚历克斯·史

好的,似乎当我licenseView.layoutIfNeeded()在UITextView中调用layoutSubviews()时,将contentSize重置为文本的大小。我不知道它到底使用什么逻辑

我可以通过编写基于UITextView的自定义类并覆盖layoutSubviews方法来解决我的问题,但是我通过以下方法解决了这个问题:

licenseView.contentInset.bottom = button.frame.size.height

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

UITextView内容偏移设置框架后

来自分类Dev

根据内容大小设置网格高度

来自分类Dev

错误的命令后无法设置或更新任何内容

来自分类Dev

错误的命令后无法设置或更新任何内容

来自分类Dev

在UItextview上设置动态高度以以编程方式适合内容

来自分类Dev

如何设置UITextView的高度以完全匹配其截断的内容?

来自分类Dev

设置文本后通过自动布局获取UITextView动态高度

来自分类Dev

AFNetworking后无法获得UIImage大小的高度

来自分类Dev

调整大小后,UITextView的内容被放错了多余的空间

来自分类Dev

更新通过 Swift 3 中的 NSLayout 设置的 UITextView 大小

来自分类Dev

内容完成渲染后动态设置fancybox 2.1.4 iframe的高度

来自分类Dev

UITextView和单元格根据textview的内容动态更新高度吗?

来自分类Dev

调整UITextView的大小-高度未调整

来自分类Dev

根据其内容动态调整UITextView的高度?

来自分类Dev

iOS 9 Swift,UITextView基于内容的高度

来自分类Dev

将UITextView框架设置为内容大小在Xcode 5中不再起作用

来自分类Dev

如何调整 UITextView 的大小,当达到特定值时,它会根据内容和固定宽度自动调整其宽度和高度?

来自分类Dev

PDF达到一定大小后无法添加内容

来自分类Dev

图像高度大小与设置不符

来自分类Dev

为什么在设置约束后无法再调整NSWindow的大小?

来自分类Dev

设置窗口大小后,SDL无法呈现到整个窗口

来自分类Dev

设置最小高度等于内容高度

来自分类Dev

将viewpager的高度设置为内容的高度

来自分类Dev

基于Swift中内容的动态UITextView大小

来自分类Dev

如何根据UITextView的内容调整UITextView和UITableViewCell的大小

来自分类Dev

点击事件后无法更新HTML字段的内容

来自分类Dev

gulp流完成后无法获取文件的更新内容

来自分类Dev

删除lxde后无法更新任何内容。出现错误

来自分类Dev

在fabric js中调整大小后如何更新矩形的宽度和高度?

Related 相关文章

  1. 1

    UITextView内容偏移设置框架后

  2. 2

    根据内容大小设置网格高度

  3. 3

    错误的命令后无法设置或更新任何内容

  4. 4

    错误的命令后无法设置或更新任何内容

  5. 5

    在UItextview上设置动态高度以以编程方式适合内容

  6. 6

    如何设置UITextView的高度以完全匹配其截断的内容?

  7. 7

    设置文本后通过自动布局获取UITextView动态高度

  8. 8

    AFNetworking后无法获得UIImage大小的高度

  9. 9

    调整大小后,UITextView的内容被放错了多余的空间

  10. 10

    更新通过 Swift 3 中的 NSLayout 设置的 UITextView 大小

  11. 11

    内容完成渲染后动态设置fancybox 2.1.4 iframe的高度

  12. 12

    UITextView和单元格根据textview的内容动态更新高度吗?

  13. 13

    调整UITextView的大小-高度未调整

  14. 14

    根据其内容动态调整UITextView的高度?

  15. 15

    iOS 9 Swift,UITextView基于内容的高度

  16. 16

    将UITextView框架设置为内容大小在Xcode 5中不再起作用

  17. 17

    如何调整 UITextView 的大小,当达到特定值时,它会根据内容和固定宽度自动调整其宽度和高度?

  18. 18

    PDF达到一定大小后无法添加内容

  19. 19

    图像高度大小与设置不符

  20. 20

    为什么在设置约束后无法再调整NSWindow的大小?

  21. 21

    设置窗口大小后,SDL无法呈现到整个窗口

  22. 22

    设置最小高度等于内容高度

  23. 23

    将viewpager的高度设置为内容的高度

  24. 24

    基于Swift中内容的动态UITextView大小

  25. 25

    如何根据UITextView的内容调整UITextView和UITableViewCell的大小

  26. 26

    点击事件后无法更新HTML字段的内容

  27. 27

    gulp流完成后无法获取文件的更新内容

  28. 28

    删除lxde后无法更新任何内容。出现错误

  29. 29

    在fabric js中调整大小后如何更新矩形的宽度和高度?

热门标签

归档