39

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

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

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

4

2 回答 2

140

得到答案:

[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];
于 2013-09-28T10:16:52.327 回答
2

通过子类化 UITextField 并添加一个 @IBInspectable 插入属性,这是一种替代方法,也许更方便一点。

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)
    }

}
于 2016-05-26T16:52:34.607 回答