UITextField
aのテキストの左余白を 10 px にしたい。それを行う最善の方法は何ですか?
質問する
32739 次
9 に答える
44
クラスを拡張しUITextField
、2 つのメソッドをオーバーライドすることでそれを行うことができます。
- (CGRect)textRectForBounds:(CGRect)bounds;
- (CGRect)editingRectForBounds:(CGRect)bounds;
コードは次のとおりです。
のインターフェースMYTextField.h
@interface MYTextField : UITextField
@end
での実装MYTextField.m
@implementation MYTextField
static CGFloat leftMargin = 28;
- (CGRect)textRectForBounds:(CGRect)bounds
{
bounds.origin.x += leftMargin;
return bounds;
}
- (CGRect)editingRectForBounds:(CGRect)bounds
{
bounds.origin.x += leftMargin;
return bounds;
}
@end
于 2011-05-11T12:45:14.470 に答える
21
以前のコメントで説明したように、この場合の最善の解決策はUITextField
、カテゴリを使用する代わりにクラスを拡張することです。これにより、目的のテキストフィールドで明示的に使用できます。
#import <UIKit/UIKit.h>
@interface MYTextField : UITextField
@end
@implementation MYTextField
- (CGRect)textRectForBounds:(CGRect)bounds {
int margin = 10;
CGRect inset = CGRectMake(bounds.origin.x + margin, bounds.origin.y, bounds.size.width - margin, bounds.size.height);
return inset;
}
- (CGRect)editingRectForBounds:(CGRect)bounds {
int margin = 10;
CGRect inset = CGRectMake(bounds.origin.x + margin, bounds.origin.y, bounds.size.width - margin, bounds.size.height);
return inset;
}
@end
カテゴリは、既存のメソッドをオーバーライドするのではなく、既存のクラスに新しい関数を追加することを目的としています。
于 2012-03-28T05:03:37.033 に答える
13
UITextField * textField = [[UITextField alloc]init];
[textField setDelegate:self];
[textField setFrame:CGRectMake(170,112,140,25)];
[textField setBorderStyle:UITextBorderStyleNone];
[textField setBackgroundColor:[UIColor clearColor]];
[self.View addSubview:noofChildTField];
UIView *paddingView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)] autorelease];
textField.leftView = paddingView;
textField.leftViewMode = UITextFieldViewModeAlways;
このコードを試してください
于 2013-03-23T06:11:19.540 に答える
11
Swift 3 の場合:
UITextField
たとえば、usernameTextFieldのアウトレットを作成します。次に、次のコードをviewDidLoad()
let paddingView : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: 20))
usernameTextField.leftView = paddingView
usernameTextField.leftViewMode = .always
width: 5
より多くのスペースが必要な場合は、より大きな値に変更してください。
于 2017-01-09T12:00:56.037 に答える
1
オーバーライドすることでほぼ到達しました- (CGRect)textRectForBounds:(CGRect)bounds
。今の問題は、TextField が編集モードに入ると、左マージンがゼロにリセットされることです.......
@implementation UITextField(UITextFieldCatagory)
- (CGRect)textRectForBounds:(CGRect)bounds {
CGRect theRect=CGRectMake(bounds.origin.x+10, bounds.origin.y, bounds.size.width-10, bounds.size.height);
return theRect;
}
于 2011-04-15T09:17:00.330 に答える
-3
これを試すことができます
TextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
TextField.textAlignment = UITextAlignmentCenter;
于 2011-04-15T09:17:26.863 に答える