字間(カーニング)に対応するUILabelを実装する(IBDesignable/IBInspectableを活用する)
UILabelでカーニング(字間)に対応する必要があったため、いろいろ調べた所……。
こんな参考資料(StackOverflow)が見つかったので、早速やってみました!
字間(カーニング)に対応したUILabelを実装する
KerningLabelを実装
まず、StackOverflowに則って、KerningLabel.swiftを実装します。
(Swift4対応してくださった@zizi4n5さんに感謝いたします!)
import UIKit
@IBDesignable
class KerningLabel: UILabel {
@IBInspectable var kerning: CGFloat = 0.0 {
didSet {
if let attributedText = self.attributedText {
let attribString = NSMutableAttributedString(attributedString: attributedText)
attribString.addAttributes([.kern: kerning], range: NSRange(location: 0, length: attributedText.length))
self.attributedText = attribString
}
}
}
}
-
@IBDesignable
でクラスの実装を始めると、Interface Builderでパラメータを調整できるViewを作ることができます! -
@IBInspectable
から書き始めて定義する箇所は、Interface Builderでパラメータ入力が可能になります!対応している型は下に書いておきます。
UILabelのCustom Classとして設定
実装が終わったら、Interface Builder側で作業です。
StoryboardやViewに置いたUILabelを選択し、Custom ClassにKerningLabelを設定します。
好みのKerningを設定
Custom ClassにKerningLabelを設定すると、UILableのInspectionに「Kerning」の項目が追加されます。
あとは、好みのパラメータを設定すれば、完璧です!
できたー!
ちなみにこの機能、Live Renderingって言うらしいよ!
IBInspectableが対応している型
なお、IBInspectableで対応している型は、以下の通りとのこと。
- Int
- CGFloat
- Double
- String
- Bool
- CGPoint
- CGRect
- UIColor
- UIImage
このサイトがわかりやすい(We ❤ Swift)
UI実装の作業効率も上がるし、なにより面白い!!
みなさんも、IBDesignableなクラスを実装して、UI実装を効率化しましょう!(これが結論?)
Author And Source
この問題について(字間(カーニング)に対応するUILabelを実装する(IBDesignable/IBInspectableを活用する)), 我々は、より多くの情報をここで見つけました https://qiita.com/sussan0416/items/5fb089fabfefdd0e821c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .