I have created a small project with UIScrollView, UIView, and UITextView
(hierarchy is also the same.) Then I have added UIFont to with size
14 to UITextView.
Since I want to enable zoom in/out feature for this, I have added
UIScrollViewDelegate to this controller and override viewForZooming
method.
Then zoom in/out things are working fine except one thing.
When I Zoom IN the screen, I can see Fonts which are inside the
UITextView is blurred. I want to keep the font quality according to zoom scale after zooming in the finish. So I override scrollViewDidEndZooming
and adjust the textView frame size it is not working.
After a google search, i found some answers, but I tried them but couldn't
find the solution and most of them are very old answers.
So I kindly request from you guys, please, help me to resolve this problem and I really appreciate your feedback and help. I have
attached my source code for your reference.
(hierarchy is also the same.) Then I have added UIFont to with size
14 to UITextView.
Since I want to enable zoom in/out feature for this, I have added
UIScrollViewDelegate to this controller and override viewForZooming
method.
Then zoom in/out things are working fine except one thing.
When I Zoom IN the screen, I can see Fonts which are inside the
UITextView is blurred. I want to keep the font quality according to zoom scale after zooming in the finish. So I override scrollViewDidEndZooming
and adjust the textView frame size it is not working.
After a google search, i found some answers, but I tried them but couldn't
find the solution and most of them are very old answers.
So I kindly request from you guys, please, help me to resolve this problem and I really appreciate your feedback and help. I have
attached my source code for your reference.
Code Block class ViewController: UIViewController { var scrollView: UIScrollView! var mainView: UIView! var textView: UITextView! override func viewDidLoad() { super.viewDidLoad() scrollView = UIScrollView(frame: .zero) scrollView.translatesAutoresizingMaskIntoConstraints = false self.view.addSubview(scrollView) NSLayoutConstraint.activate([ scrollView.widthAnchor.constraint(equalTo: self.view.widthAnchor), scrollView.heightAnchor.constraint(equalTo: self.view.heightAnchor), ]) mainView = UIView(frame: .zero) mainView.translatesAutoresizingMaskIntoConstraints = false mainView.backgroundColor = UIColor.red scrollView.addSubview(mainView) NSLayoutConstraint.activate([ mainView.widthAnchor.constraint(equalToConstant: 600), mainView.heightAnchor.constraint(equalToConstant: 400), mainView.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor), mainView.centerYAnchor.constraint(equalTo: scrollView.centerYAnchor) ]) textView = UITextView(frame: .zero) textView.translatesAutoresizingMaskIntoConstraints = false textView.backgroundColor = UIColor.blue textView.font = UIFont(name: "Thonburi", size: 14) textView.text = "Hello World" textView.textAlignment = .center mainView.addSubview(textView) NSLayoutConstraint.activate([ textView.widthAnchor.constraint(equalToConstant: 200), textView.heightAnchor.constraint(equalToConstant: 40), textView.centerXAnchor.constraint(equalTo: mainView.centerXAnchor), textView.centerYAnchor.constraint(equalTo: mainView.centerYAnchor), ]) scrollView.pinchGestureRecognizer?.isEnabled = true scrollView.maximumZoomScale = 12.0 scrollView.minimumZoomScale = 0.2 scrollView.delegate = self } } extension ViewController: UIScrollViewDelegate { func viewForZooming(in scrollView: UIScrollView) -> UIView? { if let viewForZoom = scrollView.subviews.filter({$0.tag == 1}).first { return viewForZoom } else { return scrollView.subviews.first } } func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat) { self.textView.frame = CGRect(origin: textView.frame.origin, size: CGSize(width: textView.frame.width*scale, height: textView.frame.height*scale)) } }
This is a very old post, it's objc, but it provides info on font blur when zooming.
https://stackoverflow.com/questions/13530413/how-to-resize-uilabel-text-after-zooming-uiscrollview-zoomable
Hope that will help.
https://stackoverflow.com/questions/13530413/how-to-resize-uilabel-text-after-zooming-uiscrollview-zoomable
Hope that will help.