42 lines
1.1 KiB
Swift
42 lines
1.1 KiB
Swift
//
|
|
// DynamicTextField.swift
|
|
// PrivadoVPN
|
|
//
|
|
// Created by Murad Shabanov on 03.11.2021.
|
|
// Copyright © 2021 Privado LLC. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
final class DynamicTextField: NSTextField {
|
|
|
|
public var fontName = PrivadoConstants.Font.regular
|
|
|
|
let minimumFontSize: CGFloat = 8
|
|
var sizeNotOkay = true
|
|
|
|
override func layout() {
|
|
super.layout()
|
|
|
|
while sizeNotOkay {
|
|
let expansionRect = self.expansionFrame(withFrame: self.frame)
|
|
|
|
let truncated = !NSEqualRects(NSRect.zero, expansionRect)
|
|
|
|
if truncated {
|
|
if let actualFontSize: CGFloat = self.font?.fontDescriptor.object(forKey: NSFontDescriptor.AttributeName.size) as? CGFloat {
|
|
self.font = NSFont(name: fontName, size: actualFontSize - 1)
|
|
|
|
if actualFontSize < minimumFontSize {
|
|
break
|
|
}
|
|
}
|
|
} else {
|
|
sizeNotOkay = false
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|