В любом случае, чтобы определить, была ли активирована настройкаFontSizeToFitWidth? Мое приложение имеет UILabel, который занимает весь вид. Используя UIPinchGestureRecognizer, вы можете вставлять и изменять размер шрифта. Прекрасно работает. Однако, когда шрифт достигает максимального размера для UILabel, он отображает странное поведение. Текст в UILabel перемещается вниз по UILabel. Без добавления bannerLabel.adjustsFontSizeToFitWidth = true
текст обрезается. Я хотел бы знать, когда шрифт имеет максимальный размер для UILabel, и я перестану пытаться увеличить размер шрифта.Любой способ определить, срабатывает ли настройкаFontSizeToFitWidth?
import UIKit
class ViewController: UIViewController, UIGestureRecognizerDelegate {
@IBOutlet weak var bannerLabel: UILabel!
var perviousScale:CGFloat = 0
var fontSize:CGFloat = 0
var originalFontSize: CGFloat = 0
override func viewDidLoad() {
super.viewDidLoad()
let pinchGesture = UIPinchGestureRecognizer(target: self, action: Selector("pinch:"))
view.addGestureRecognizer(pinchGesture)
perviousScale = pinchGesture.scale
bannerLabel.adjustsFontSizeToFitWidth = true
originalFontSize = bannerLabel.font.pointSize
fontSize = originalFontSize
}
func pinch(sender:UIPinchGestureRecognizer) {
println("font size \(bannerLabel.font.pointSize)")
if perviousScale >= sender.scale //Zoom In
{
decreaseFontSize()
}
else if perviousScale < sender.scale //Zoom Out
{
increaseFontSize()
}
}
func threeFingers(sender:UIPanGestureRecognizer) {
println("threeFingers")
}
override func didRotateFromInterfaceOrientation(fromInterfaceOrientation: UIInterfaceOrientation) {
bannerLabel.font = UIFont(name: bannerLabel.font.fontName, size: fontSize)
}
func increaseFontSize(){
bannerLabel.font = UIFont(name: bannerLabel.font.fontName, size: fontSize)
fontSize = fontSize + 2.5
}
func decreaseFontSize(){
bannerLabel.font = UIFont(name: bannerLabel.font.fontName, size: fontSize)
if fontSize >= originalFontSize {
fontSize = fontSize - 2.5
}
}
}
Спасибо. Как это реализовать, я никогда раньше не использовал '.addObserver'. Когда я добавляю строку, я получаю следующую ошибку: 'Не могу вызывать 'addObserver' со списком аргументов типа '(ViewController, forKeyPath: String, options: String, context: nil)'' –
Извините, см. Мои правки на полное решение –
'dynamic UILabel bannerLabel = UILabel()' дает мне следующую ошибку 'последовательные объявления в строке должны быть разделены символом ';'' –