Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How Can I Get the height of the UITextView #125

Open
X-Trafa opened this issue Sep 15, 2020 · 6 comments
Open

How Can I Get the height of the UITextView #125

X-Trafa opened this issue Sep 15, 2020 · 6 comments

Comments

@X-Trafa
Copy link

X-Trafa commented Sep 15, 2020

I have a rich string with a remote long picture inside. But how can I get the height of the picture or the textVIew? (Width is known)
I have tried UITextView.sizeThatFits(<size: CGSize). It's not working.

@philosopherdog
Copy link

Did you try setting the UITextView's scrolling off?

textView.textContainerInset = .zero
textView.textContainer.lineFragmentPadding = 0
textView.isScrollEnabled = false

textView.sizeThatFits(.init(width: width, height: .greatestFiniteMagnitude))

@X-Trafa
Copy link
Author

X-Trafa commented Oct 1, 2020

Really appreciate for your replying. But I've tried your solution which still doesn't work. Could please help me out? Code as follow:
`
import UIKit
import SwiftRichString
import SnapKit

class ViewController: UIViewController {

var textView = UITextView()

override func viewDidLoad() {
    super.viewDidLoad()
    
    self.view.backgroundColor = UIColor.white
    self.view.addSubview(textView)
    textView.backgroundColor = .black
    textView.snp.makeConstraints { (maker) in
        maker.top.equalTo(self.view.safeAreaLayoutGuide).offset(20)
        maker.width.left.equalTo(self.view)
        maker.height.equalTo(800)
    }
    
    let taggedText = """
    This other is loaded from remote URL This other is loaded from remote URL This other is loaded from remote URL This other is loaded from remote URL This other is loaded from remote URL:
    <img url="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1601572902181&di=7b0ddfd1460945c25e811691fcd5a710&imgtype=0&src=http%3A%2F%2Fimg1.imgtn.bdimg.com%2Fit%2Fu%3D2584119826%2C556593725%26fm%3D214%26gp%3D0.jpg"/>
    """
    let styleBase = Style({
        $0.font = UIFont.boldSystemFont(ofSize: 15)
    })
    let styleBold = Style({
        $0.font = UIFont.boldSystemFont(ofSize: 20)
        $0.color = UIColor.blue
    })
    let groupStyle = StyleXML.init(base: styleBase, ["b" : styleBold])
    textView.attributedText = taggedText.set(style: groupStyle)
    
    textView.textContainerInset = .zero
    textView.textContainer.lineFragmentPadding = 0
    textView.isScrollEnabled = false
    
    let newheight = textView.sizeThatFits(.init(width: self.view.frame.width, height: .greatestFiniteMagnitude)).width

    textView.snp.updateConstraints { (maker) in
        maker.height.equalTo(newheight)
    }

    print(newheight)
    // Do any additional setup after loading the view.
}

}
`

@X-Trafa
Copy link
Author

X-Trafa commented Oct 1, 2020

Additionally, according to my test. " .sizeThatFits" works for text resource but not for image resource.

@philosopherdog
Copy link

try .height?

@X-Trafa
Copy link
Author

X-Trafa commented Oct 1, 2020

Sorry for my stupid mistake. But .height still doesn't give me the right height.
I am planing to give up and use WKWebView instead.
Thanks a lot then

@Nevergive-up
Copy link

对不起我的愚蠢错误。但是 .height 仍然没有给我正确的高度。 我打算放弃并改用 WKWebView。 那就太感谢了
下面链接中是我总结计算富文本高度的文章
https://blog.csdn.net/u014651417/article/details/124764887?spm=1001.2014.3001.5501

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants