问题
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