2014-10-14 3 views
0

Я сейчас в процессе реализации своего браузера в своем приложении. Тем не менее, я довольно новичок в программировании на iOS и поэтому не знаю, как программно изменить ширину текстового поля. Что происходит в текущей реализации, так это то, что текстовое поле переместится через кнопку «Назад» навигационного контроллера. Таким образом, мне нужно текстовое поле, чтобы оставить какую-то комнату слева.Изменить ширину UITextField?

Кто-нибудь знает, как это сделать? Возможно ли это?

/* Create the page title label */ 
UINavigationBar *navBar = self.navigationController.navigationBar; 
CGRect labelFrame = CGRectMake(kMargin, kSpacer, 
           navBar.bounds.size.width - 2*kMargin, kLabelHeight); 
UILabel *label = [[UILabel alloc] initWithFrame:labelFrame]; 
label.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
label.backgroundColor = [UIColor clearColor]; 
label.font = [UIFont systemFontOfSize:12]; 
label.textAlignment = NSTextAlignmentCenter; 
[navBar addSubview:label]; 
self.pageTitle = label; 

/* Create the address bar */ 
CGRect addressFrame = CGRectMake(kMargin, kSpacer*2.0 + kLabelHeight, 
           labelFrame.size.width, kAddressHeight); 
UITextField *address = [[UITextField alloc] initWithFrame:addressFrame]; 
address.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
address.borderStyle = UITextBorderStyleRoundedRect; 
address.font = [UIFont systemFontOfSize:17]; 
address.keyboardType = UIKeyboardTypeURL; 
address.autocapitalizationType =UITextAutocapitalizationTypeNone; 
address.autocorrectionType = UITextAutocorrectionTypeNo; 
address.clearButtonMode = UITextFieldViewModeWhileEditing; 
[address addTarget:self 
      action:@selector(loadRequestFromAddressField:) 
    forControlEvents:UIControlEventEditingDidEndOnExit]; 
[navBar addSubview:address]; 
self.addressField = address; 

ответ

2

Вы можете контролировать позиционирование и размер из элемента пользовательского интерфейса, в этом случае ваш UITextField, изменяя его свойства frame.

frame является прямоугольником типа CGRect. Он состоит из четырех компонентов, которые определяют его расположение и размер в координатном пространстве экрана.

Первые два компонента: x и y. Они представляют собой положение прямоугольника. В верхнем левом углу экрана находится точка (0,0), поэтому ваши пользовательские значения x и y относятся к этой точке.

В вашем случае вам необходимо изменить свойство вида x, так как вы описали, что ваш UITextField находится слишком далеко слева. Увеличение значения x в поле вашего текстового поля приведет к перемещению текстового поля вправо.

Вы можете сделать это, например. путем вызова выполнения следующей операции после того, как ваш UITextField инициализируется (предполагается, что его имя переменной address):

address.frame = CGRectMake(address.frame.origin.x + 10.0, address.frame.origin.y, address.frame.size.width, address.frame.size.width)

Это смещение вашего текстового поля 10 точек вправо.

+0

Другой вопрос. Если изменение вида (кнопка назад на навигационном контроллере), адресная строка не исчезает. Как я могу это сделать? – user4114789