【iOS】UILabelにPaddingをつける(Swift3対応)
はじめに
以下の記事をいいねやストックしてくれる人がまだいるので、Swift3対応したやつに書き換えました。
【iOS】UILabelにPaddingをつける - Qiita
ほぼ同じ内容ですが、Playgroundで遊んでみたのでそちらも参考にしてもらえればと思います。
PaddingLabel
class PaddingLabel: UILabel {
@IBInspectable var padding: UIEdgeInsets = UIEdgeInsets(top: 4, left: 8, bottom: 4, right: 8)
override func drawText(in rect: CGRect) {
let newRect = UIEdgeInsetsInsetRect(rect, padding)
super.drawText(in: newRect)
}
override var intrinsicContentSize: CGSize {
var contentSize = super.intrinsicContentSize
contentSize.height += padding.top + padding.bottom
contentSize.width += padding.left + padding.right
return contentSize
}
}
@IBInspectable
は無駄ですが、つけてみました。
Playgroundとスクショ
以下Playground
のソースコードとスクショです。
//: Playground - noun: a place where people can play
import UIKit
import PlaygroundSupport
class PaddingLabel: UILabel {
@IBInspectable var padding: UIEdgeInsets = UIEdgeInsets(top: 4, left: 8, bottom: 4, right: 8)
override func drawText(in rect: CGRect) {
let newRect = UIEdgeInsetsInsetRect(rect, padding)
super.drawText(in: newRect)
}
override var intrinsicContentSize: CGSize {
var contentSize = super.intrinsicContentSize
contentSize.height += padding.top + padding.bottom
contentSize.width += padding.left + padding.right
return contentSize
}
}
// preview
let previewSize = CGSize(width: 300, height: 300)
let view = UIView(frame: CGRect(origin: .zero, size: previewSize))
view.backgroundColor = .white
PlaygroundPage.current.liveView = view
let frame = CGRect(origin: CGPoint(x: 50, y: 10), size: CGSize(width: 200, height: 40))
let paddingLabel = PaddingLabel(frame: frame)
paddingLabel.backgroundColor = .black
paddingLabel.textColor = .white
paddingLabel.text = "padding label"
paddingLabel.font = UIFont.systemFont(ofSize: 22)
view.addSubview(paddingLabel)
let normalLabel = UILabel(frame: CGRect(x: 50, y: paddingLabel.frame.maxY + 20, width: 200, height: 40))
normalLabel.backgroundColor = .black
normalLabel.textColor = .white
normalLabel.text = "normal label"
normalLabel.font = UIFont.systemFont(ofSize: 22)
view.addSubview(normalLabel)
左にうまくPaddingが取れているのがわかるかと思います。
日本語フォントで英字を扱うときに沈んだりするのを回避するのでUILabel
に高さの制限をつけるのもありかと思いますが、ソースコードで解決するのもいいかなと思います。
終わりに
このまま昔書いたソースコードをSwift3で書き直していこうと思います。
以上です。
Author And Source
この問題について(【iOS】UILabelにPaddingをつける(Swift3対応)), 我々は、より多くの情報をここで見つけました https://qiita.com/ryokosuge/items/eb64ed8e6d718378f770著者帰属:元の著者の情報は、元の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 .