web-dev-qa-db-ja.com

IOS-UITextViewからすべてのパディングを削除

UITextViewの左のパディングを削除するためのSOには多くの素晴らしい例があります。

ITextViewでマージン/パディングを失う方法

ただし、適切なパディングも削除する必要があります。

私が試してみました...

[tv setContentInset: UIEdgeInsetsMake(-4,-8,-8,-X)];//where X is any integer

そして、パディングを削除するために最後の2つの値のほぼすべての他の順列と何も動作しないようです。また試してみました

[tv sizeToFit];
[tv setTextAlignment:[NSTextAlignmentRight]];

Textviewの次のテキストは「00」と言います

enter image description here

44
mattyd

IOS 7のみですが、非常にクリーンなソリューションは、textViewのtextContainerInsetsを次のように設定することです。

[textView setTextContainerInset:UIEdgeInsetsZero];
textView.textContainer.lineFragmentPadding = 0; // to remove left padding

これにより、テキストビュー内のテキストの周囲のすべてのパディング(インセット)が効果的に削除されます。展開ターゲットがiOS 7以降の場合、これがこれまでの最善のソリューションです。

159
dbart

すべてのパディングを完全に削除するには、lineFragmentPaddingを考慮する必要があります。

let padding = textView.textContainer.lineFragmentPadding
textView.textContainerInset = UIEdgeInsetsMake(0, -padding, 0, -padding)

lineFragmentPadding のデフォルト値は5で、フラグメント長方形の始まりと終わりにあります。

lineFragmentPaddingを0に設定することを提案する回答もありました。ただし、ドキュメントで説明されているように、テキストの余白を表現するようには設計されていません。したがって、0に設定しないでください。

14
samwize

UITextViewをサブクラス化し、次のメソッドをオーバーライドしてください:

    - (id)styleString
{
    return [[super styleString] stringByAppendingString:@"; line-height: 1.6em;margin-right: 30px; margin-left: 0px; margin-top: 0px;"];
}

どうやら。余白、余白、必要なものは何でも微調整できます;)

7
Mohamed A.Karim