その日に覚えたこと、学んだこと、知ったこと、気になったこと等を日記のように書いていきます。
今回は 2020/01/15(火)に学んだことを書いていきます。
【Swift】
UITextViewの表示を省略して「…」にする
以下のコードで最大行数を3行に設定し、文字が入りきらない場合は行末を「…」と表示する。
UITextView.textContainer.maximumNumberOfLines = 5
UITextView.textContainer.lineBreakMode = .byTruncatingTail
参考記事
- Swift – UItextViewで指定行数以降の入力を不可にしたい|teratail
- UITextViewのLine Breakを設定して最後を…にする方法 – iOS-App-Development
UITextViewの行数を取得する
以下のメソッドでUITextViewの行数を取得できる。
func getNumberOfLines(in textView: UITextView) -> Int {
let numberOfGlyphs = textView.layoutManager.numberOfGlyphs
var index = 0, numberOfLines = 0
var lineRange = NSRange(location: NSNotFound, length: 0)
while index < numberOfGlyphs {
textView.layoutManager.lineFragmentRect(forGlyphAt: index, effectiveRange: &lineRange)
index = NSMaxRange(lineRange)
numberOfLines += 1
}
return numberOfLines
}
参考記事
UITextViewの文字の周りの余白を広げる
UITextViewの文字の周りを広げるには textContainerInset
を使用する。
textView.textContainerInset = UIEdgeInsetsMake(20, 20, 20, 20)
textView.sizeToFit()
参考記事
UITextViewの文字周りの余白を消す
逆にUITextViewの文字の周りの余白を消す場合には以下のようにする。
textView.textContainerInset = UIEdgeInsetsZero
textView.textContainer.lineFragmentPadding = 0
参考記事
UIButtonの文字の変更
UIButtonの文字を動的に変更したい場合はIBActionに記述します。
以下のように設定することで、ボタンがタップされた時に文字が変更します。
@IBAction func greeting(_ sender: UIButton) {
sender.titleLabel?.text = "こんにちは!"
}