Контроллеры в Grails

Вызывать следующий метод каждый раз после изменения размера UILabel.

func labelSizeHasBeenChangedAfterPinch(_ label:UILabel, currentSize:CGSize){
        let MAX = 25
        let MIN = 8
        let RATE = -1
        for proposedFontSize in stride(from: MAX, to: MIN, by: RATE){
            let options = NSStringDrawingOptions.usesFontLeading.union(.usesLineFragmentOrigin)
            let attribute = [NSAttributedString.Key.font:UIFont.systemFont(ofSize: CGFloat(proposedFontSize))]
            // let context = IF NEEDED ...
            let rect =  NSString(string: label.text ?? "").boundingRect(with: currentSize, options: options, attributes: attribute, context: nil)
            let labelSizeThatFitProposedFontSize = CGSize(width: rect.width , height: rect.height)
            if (currentSize.height > labelSizeThatFitProposedFontSize.height) && (currentSize.width > labelSizeThatFitProposedFontSize.width){
                DispatchQueue.main.async {
                    label.font = UIFont.systemFont(ofSize: CGFloat(proposedFontSize))
                }
                break
            }
        }
    }
7
задан knorv 27 January 2009 в 21:57
поделиться

4 ответа

Используйте фильтр, тот способ, которым можно поместить тот же самый повторный код в фильтр и сохранить контроллеры сфокусированными на реальном действии.

9
ответ дан 6 December 2019 в 10:54
поделиться

Вы могли бы попытаться определить это как фильтр вместо того, чтобы копировать код.

1
ответ дан 6 December 2019 в 10:54
поделиться

Я соглашаюсь с другими предложений фильтра, сделали. Если это не работает на Вас, Вы могли бы определить beforeInterceptor на своем контроллере для уменьшения некоторого дублирования также.

1
ответ дан 6 December 2019 в 10:54
поделиться

Я думаю с помощью beforeInterceptor, является соответствующим. И дайте некоторый взгляд на этот плагин JSecurity. Для аутентификации пользователя jsecurity плагин очень полезно.

3
ответ дан 6 December 2019 в 10:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: