UITextfiels границы, странное поведение - PullRequest
0 голосов
/ 17 января 2012

Я не понимаю, что происходит с простым кодом.Я хочу изменить ширину UITextField, но когда я это сделаю, он также изменит свой origin.x.Я перепробовал много конфигураций, но не могу найти решение.

Текстовое поле в UIView:

containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
containerView.backgroundColor = [UIColor whiteColor];

textfield = [[UITextField alloc] initWithFrame:CGRectMake(5,20,200,30)];
textfield.leftViewMode = UITextFieldViewModeAlways;

А вот код для изменения его ширины:

[UIView beginAnimations:nil context:nil];

textfield.bounds = CGRectMake(textfield.bounds.origin.x,
                                  textfield.bounds.origin.y,
                                  textfield.bounds.size.width + 110, 
                                  textfield.bounds.size.height);
[UIView commitAnimations];

Каждый раз, origin.x меняется на что-то вроде -55 (но NSLog печатает 0).Есть ли у вас какие-либо идеи?Я хотел бы всегда поддерживать то же самое origin.x.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 18 января 2012

Вместо изменения границ попробуйте изменить кадр:

[UIView beginAnimations:nil context:nil];

textfield.frame= CGRectMake(textfield.frame.origin.x,
                              textfield.frame.origin.y,
                              textfield.frame.size.width + 110, 
                              textfield.frame.size.height);
[UIView commitAnimations];

Из документов:

Changing the bounds size grows or shrinks the view relative to its center point

И это, похоже, проблема в вашем случае.

...