How to set content inset for UITextView in ios

前端 未结 2 1970
广开言路
广开言路 2020-12-15 15:21

I\'m having a UITextView and set content inset as

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

This code working in iOS 6.1 and

相关标签:
2条回答
  • 2020-12-15 16:14

    got answer:

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

    fixed my problem.

    And in Swift...

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

    UPDATE: another option to do that.

    UIView *spacerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
    [msgtext setLeftViewMode:UITextFieldViewModeAlways];
    [msgtext setLeftView:spacerView];
    
    0 讨论(0)
  • 2020-12-15 16:21

    An alternative and maybe a little more convenient way to do it, by subclassing the UITextField and add an @IBInspectable inset property.

    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)
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题