Вы, вероятно, используете docker volumes
, чтобы открыть интерфейс sysfs
. Например, что-то вроде:
docker run -v /sys:/sys fedora bash
Это вывело бы /sys
на хост в качестве /sys
внутри контейнера, и у вас будет доступ к иерархии /sys/class/gpio
.
Если вы использовали код, который обращался к контактам GPIO, не используя интерфейс sysfs
, вам нужно было бы открыть любой узел устройства, который он использует внутри контейнера, возможно, с чем-то вроде --device
аргумента docker run
.
Вызывать следующий метод каждый раз после изменения размера 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
}
}
}
Я решил проблему с помощью следующего кода, который отлично работает с каждым аспектом, упомянутым в вопросе, подобным 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
}
вы можете попробовать:
1 - установить максимальный размер шрифта для этой метки
2 - установить разрыв строки на усеченный хвост
3 - установить автоматическое сжатие на минимальный размер шрифта (минимальный размер)