捏缩放文字?

时间:2017-09-28 11:15:38

标签: ios swift

是否可以在iOS应用中捏缩放(甚至双击缩放)文字?我已经制作了一个小应用程序,基本上是一个紧急联系人列表,并希望添加功能,通过缩放使文本更大。

我通过创建一个按钮以编程方式增加字体大小,但我在视图控制器之间往返传递数据时遇到了麻烦。

如果可以实施,我认为缩小缩放将是一个更容易的解决方案。 谷歌搜索我找到了缩放图像的例子,但没有关于缩放文本的例子。我已经看到它使用我猜的webkit在safari中实现,但没有找到任何编码示例如何实现。

我很感激任何意见,即使这只是说它无法完成,至少我可以寻找另一种解决方案。

1 个答案:

答案 0 :(得分:2)

这个简单的代码会在收缩时放大或缩小myTextView中的文本。 Swift 3

@IBOutlet weak var myTextView: UITextView!
var pinchGesture = UIPinchGestureRecognizer()

override func viewDidLoad() {
    super.viewDidLoad()
    pinchGesture = UIPinchGestureRecognizer(target: self, action:#selector(pinchText(sender:)))
    myTextView.addGestureRecognizer(pinchGesture)
}

@objc func pinchText(sender: UIPinchGestureRecognizer) {
    var pointSize = myTextView.font?.pointSize
    pointSize = ((sender.velocity > 0) ? 1 : -1) * 1 + pointSize!;
    myTextView.font = UIFont( name: "arial", size: (pointSize)!)
}

更新 - 如果您需要保留格式化文本:

@objc func pinchText(sender: UIPinchGestureRecognizer) {
    var pointSize = CGFloat(UserDefaults.standard.float(forKey: "fontSize"))
    pointSize = ((sender.velocity > 0) ? 1 : -1) * 1 + pointSize!;
    UserDefaults.standard.set(pointSize, forKey: "fontSize")
    UserDefaults.standard.synchronize()

    let formattedText = NSMutableAttributedString.init(attributedString: myTextView!.attributedText)
    formattedText.addAttribute(NSAttributedStringKey.font, value: UIFont.systemFont(ofSize: pointSize), range: NSRange(location: 0, length: formattedText.length))
    myTextView.attributedText = formattedText
}