如何在ios中为UITextView设置内容插入

时间:2013-09-28 10:04:22

标签: ios ios7 uitextview uiedgeinsets

我有一个UITextView并将内容设置为

[atextView setContentInset:UIEdgeInsetsMake(0, 10, 0, 0)];

此代码适用于iOS 6.1及更低版本,但iOS 7.0中没有任何内容。

2 个答案:

答案 0 :(得分:131)

得到答案:

[atextView  setTextContainerInset:UIEdgeInsetsMake(7, 7, 0, 0)];

解决了我的问题。

在斯威夫特......

@IBOutlet var tv:UITextView!
override func awakeFromNib() {
    super.awakeFromNib()
    tv.textContainerInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}

更新:另一种选择。

UIView *spacerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
[msgtext setLeftViewMode:UITextFieldViewModeAlways];
[msgtext setLeftView:spacerView];

答案 1 :(得分:1)

通过继承UITextField并添加@IBInspectable inset属性,可以采用另一种方法,也许是更方便的方法。

import UIKit

class UITextfieldWithInset: UITextField {

    @IBInspectable
    var textfieldInset: CGPoint = CGPointMake(0, 0)

    override func textRectForBounds(bounds: CGRect) -> CGRect {
        return CGRectInset(bounds, textfieldInset.x, textfieldInset.y)
    }

    override func editingRectForBounds(bounds: CGRect) -> CGRect {
        return CGRectInset(bounds, textfieldInset.x, textfieldInset.y)
    }

    override func placeholderRectForBounds(bounds: CGRect) -> CGRect {
        return CGRectInset(bounds, textfieldInset.x, textfieldInset.y)
    }

}