Я хочу поместить левый край текста UITextField
в 10 пикселей. Каков наилучший способ сделать это?Добавить lefthand margin в UITextField
ответ
Как я уже объяснил в предыдущем комментарии, лучшим решением в данном случае является расширение класса 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
Категория предназначена для добавления новых функций в существующий класс, а не для переопределения существующего метода.
Я достиг почти путем переопределения - (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;
}
hi need soln ??? – iOSPawan
Почему бы не bounds.origin.y - 20? –
Вы можете попробовать это
TextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
TextField.textAlignment = UITextAlignmentCenter;
Мне нужно левое поле до 10 Px – iOSPawan
Вы можете сделать это путем расширения UITextField
класса и главенствующими два метода:
- (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
Спасибо, что это сработало для меня ... Но у меня есть одна проблема, что она использует это для всех текстовых полей в моем приложении. Я хочу, чтобы это было в определенном текстовом поле. помоги мне в этом. – Sabby
Это ожидаемое поведение каталогов, это не решение в этом случае. Вы должны расширить UITextField и переопределить те же методы. Поэтому вместо этого используйте решение @clopez. – TwiterZX
Сначала я одобрил, но затем вниз. Если вы добавите 10 px для начала координат, вам нужно вычесть _20_ px из ширины, чтобы сохранить тот же край слева и справа. Плюс методы переопределения через категорию - действительно плохой идеал-чувак, как уже отмечалось выше. –
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;
Попробуйте этот код
отлично! Спасибо! просто измените CGRectMake 5 на гораздо большее значение, если нам понадобится больший запас. –
Я надеялся увидеть установку в IB в инспекторе свойств, чтобы изменить это значение. Оказывается, я нечаянно установил выравнивание и стиль границы для значений, которые испортились с заполнением слева.
Вы бы не подумали, что было бы выгодно выбрать право налево и без границ, но это делает слова в основном перекрывающимися или приближающимися к краю коробки, и это выглядит неправильно.
Bad:
Хорошо:
Fixed это право для меня. Надеюсь, это тоже поможет кому-то другому.
+1, заметив, что 'UITextBorderStyleRoundedRect' добавляет приятное левое дополнение к TextField, тогда как' UITextBorderStyleNone' плюс ваша собственная (прямоугольная) рамка помещает текст прямо вверх по краю. – pkamb
Для 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
на большее значение, если требуется больше места.
Это гораздо приятнее, чем подклассы ... :) – chrisoneiota
- 1. Добавить margin в DataGridTextColumn
- 2. Как создать боковую панель lefthand?
- 3. .animate(), чтобы добавить margin
- 4. Добавить ярлык в UITextField
- 5. Добавить UITextfield в UIAlertView
- 6. Добавить UITextField в UIToolbar
- 7. Как добавить margin в ComboItems в WPF
- 8. Добавить UITextField в UIView программно
- 9. Как добавить местозаполнитель в UITextField?
- 10. Добавить opaque subview в UITextField
- 11. Добавить несколько UITextfield в UIAlertview
- 12. добавить UITextField в комплект спрайтов
- 13. Добавить содержимое UITextField в NSMutableArray
- 14. добавить кнопку в UITextfield iphone?
- 15. Как добавить UILongPressGestureRecognizer в UITextField?
- 16. добавить значок в UITextField с rubymotionquery
- 17. Добавить UITextField для ScrollView
- 18. iPhone UItextField добавить изображение?
- 19. Как добавить margin между вкладками в TabLayout?
- 20. Добавить margin-bottom в Image Before footer
- 21. Невозможно добавить margin-right в строке сообщений
- 22. Eclipse не показывает ошибки на стороне Lefthand
- 23. CLLocationManager margin margin
- 24. jQuery margin margin issue
- 25. Susy "wide" margin margin
- 26. div margin margin margin parent div
- 27. Добавить UITextField над клавиатурой iOS
- 28. Как добавить UIActivityIndicatorView в rightView UITextField в
- 29. Как добавить поля в UITextField в UIAlertController?
- 30. Добавить UITextField в UIAlertView в C#
Один вопрос. Как я могу использовать этот новый расширенный класс из Storyboard или Interface Builder? Большое спасибо. – Ricardo
Привет, Рикардо, вам нужно выбрать элемент в Storyboard или Interface Builder и отредактировать собственный класс в Identity Inspector. http://grrrab.it/5rr3xy – clopez
Спасибо clopez, отлично работает сейчас! :) – Ricardo