Изменить размер шрифта вместе с рамкой надписи с помощью жеста повышения на UILabel?

Вы, вероятно, используете docker volumes, чтобы открыть интерфейс sysfs. Например, что-то вроде:

docker run -v /sys:/sys fedora bash

Это вывело бы /sys на хост в качестве /sys внутри контейнера, и у вас будет доступ к иерархии /sys/class/gpio.

Если вы использовали код, который обращался к контактам GPIO, не используя интерфейс sysfs, вам нужно было бы открыть любой узел устройства, который он использует внутри контейнера, возможно, с чем-то вроде --device аргумента docker run.

1
задан Bhavik Modi 16 January 2019 в 11:56
поделиться

3 ответа

Вызывать следующий метод каждый раз после изменения размера 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
            }
        }
    }
0
ответ дан roy 16 January 2019 в 11:56
поделиться

Я решил проблему с помощью следующего кода, который отлично работает с каждым аспектом, упомянутым в вопросе, подобным Snapchat и Instagram:

var pointSize: CGFloat = 0
@objc func pinchRecoginze(_ pinchGesture: UIPinchGestureRecognizer) {
    guard pinchGesture.view != nil else {return}

    let view = pinchGesture.view!
    if (pinchGesture.view is UILabel) {
        let textLabel = view as! UILabel

        if pinchGesture.state == .began {
            let font = textLabel.font
            pointSize = font!.pointSize

            pinchGesture.scale = textLabel.font!.pointSize * 0.1
        }
        if 1 <= pinchGesture.scale && pinchGesture.scale <= 10  {
            textLabel.font = UIFont(name: textLabel.font!.fontName, size: pinchGesture.scale * 10)

            resizeLabelToText(textLabel: textLabel)
        }
    }
}

func resizeLabelToText(textLabel : UILabel) {
    let labelSize = textLabel.intrinsicContentSize
    textLabel.bounds.size = labelSize
}
0
ответ дан Bhavik Modi 16 January 2019 в 11:56
поделиться

вы можете попробовать:

1 - установить максимальный размер шрифта для этой метки

2 - установить разрыв строки на усеченный хвост

3 - установить автоматическое сжатие на минимальный размер шрифта (минимальный размер)

enter image description here

0
ответ дан Zorot 16 January 2019 в 11:56
поделиться
Другие вопросы по тегам:

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