Padding Placeholder text ios

浪子不回头ぞ 提交于 2020-02-23 10:21:15

问题


I want to make the placeholder text display in middle of the textfield (Padding placeholder text). The size of the placeholder text also needs to increase. My code is as follows, how can i solve this ?

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(30, 220,250,55)];

textField.placeholder=@"iiiiiii";

UIView *padView = [[UIView alloc] initWithFrame:CGRectMake(10, 110, 10, 0)];
textField.leftView = padView;
    textField.leftViewMode = UITextFieldViewModeAlways;


[self.view addSubview:textField];

UPDATE

I want the font size of the placeholder text to increase your name, and it should have a Left padding to it.


回答1:


You could subclass your UITextFiled and override methods:

MyTextField.m

- (CGRect)textRectForBounds:(CGRect)bounds {
    return [self rectForBounds:bounds];
}

- (CGRect)editingRectForBounds:(CGRect)bounds {
    return [self rectForBounds:bounds];
}

- (CGRect)placeholderRectForBounds:(CGRect)bounds {
    return [self rectForBounds:bounds];
}

//here 40 - is your x offset
- (CGRect)rectForBounds:(CGRect)bounds {
    return CGRectInset(bounds, 40, 3);
}

upd: also set

textFiled.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

because it could some problems with io6 vs ios 7 vertical positionning




回答2:


Same question was being asked and answered as below Set padding for UITextField with UITextBorderStyleNone

  UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)];
  textField.leftView = paddingView;
  textField.leftViewMode = UITextFieldViewModeAlways;



回答3:


You can set the starting text alignment (of the textField from xib or via code) to be center aligned.
Then in the -textFieldShouldBeginEditing, you can set the textField to be left aligned.
Similarly, on the -textFieldDidEndEditing, check if the textField is empty and if it is then set textField back to center aligned.

basically:

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    [textField setTextAlignment:NSTextAlignmentLeft];
    return YES;
}

-(void)textFieldDidEndEditing:(UITextField *)textField
{
    if(textField.text.length == 0) {
        [textField setTextAlignment:NSTextAlignmentCenter];
    }
}

EDIT::

the .h of your ViewController class should look like:

@interface ViewController : UIViewController <UITextFieldDelegate> 
{
    UITextField *myTextField;
}

now, replace your other code with this:

myTextField = [[UITextField alloc] initWithFrame:CGRectMake(30, 220,250,55)];

myTextField.placeholder=@"iiiiiii";

//important
[myTextField setDelegate: self];

//commented lines not really needed
//UIView *padView = [[UIView alloc] initWithFrame:CGRectMake(10, 110, 10, 0)];
//textField.leftView = padView;
//textField.leftViewMode = UITextFieldViewModeAlways;

[self.view addSubview:textField];



回答4:


sampleTextfield.leftView = UIView(frame: CGRectMake(0, 0, 20, self.sampleTextfield.frame.height))
sampleTextfield.leftViewMode = UITextFieldViewMode.Always



回答5:


The easiest way that I found to do this task on swift 2 and Xcode 7:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var emailTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        let paddingView = UIView(frame: CGRectMake(0, 0, 25, self.emailTextField.frame.height))
        emailTextField.leftView = paddingView
        emailTextField.leftViewMode = UITextFieldViewMode.Always
    }
}



回答6:


func placeholderPadding(textField:UITextField, leftPadding:CGFloat) {
            textField.leftView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: leftPadding, height: textField.frame.height))
            textField.leftViewMode = UITextFieldViewMode.always
        }



回答7:


While I have not specifically tested it, this should work:

self.YourTextField.attributedPlaceholder = NSAttributedString(string: "    YourText")

Add the amount of blank spaces (padding) to your string




回答8:


Just hit the space key a few times to pad the placeholder text from the left.

  text

versus

text


来源:https://stackoverflow.com/questions/20425281/padding-placeholder-text-ios

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!