2015-02-11 5 views
0

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

self.addFriendView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 50)]; 
    self.addFriendView.center=self.view.center; 
    [self.addFriendView setBackgroundColor:[UIColor whiteColor]]; 

    UITextField *nameField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 280, 40)]; 
    nameField.delegate=self; 
    nameField.center=self.view.center; 
    [email protected]"enter username"; 
    [self.addFriendView addSubview:nameField]; 
    [self.tableView.superview addSubview:self.addFriendView]; 

Когда я помещаю в UITextField в центре UIView делать координаты должны быть внутри координат UIView «s или кадров?

+0

Какой метод этот код в? – InkGolem

+0

Возможно, аналогичный вопрос переполнения стека был бы полезен: http://stackoverflow.com/questions/8908510/center-uibutton-programatically Удача – kbpontius

ответ

2

Это потому, что addFriendView.center - это центр в его координате наблюдения, который равен {150, 25}. Вы хотите, чтобы центр nameField находился в центре addFriendView в координате addFriendView.

Так, используйте:

nameField.center = CGPointMake(CGRectGetMidX(addFriendView.bounds), 
           CGRectGetMidY(addFriendView.bounds)); 

Обновлено использовать CGRectGetMidX и CGRectGetMidY вместо этого.

+0

Лучше использовать методы CGRectGetMid *, они хороши для любых прямоугольников: nameField.center = CGPointMake (CGRectGetMidX (addFriendView.bounds), CGRectGetMidY (addFriendView.bounds)); –

+0

Да, это явно лучше. Забыл об этом: p – sikhapol

0

Поскольку вы добавили nameField в качестве подглядывания self.addFriendView, его центр должен быть от self.addFriendView.

nameField.center=self.view.center; 

Эта строка вызывает вашу проблему. Если это факт, это также проблема, когда вы назначаете center, но, к счастью, границы self.view совпадают с границами его супервизора.

Вместо этого, вы хотите сделать это:

nameField.center=CGPointMake(CGRectGetMidX(self.addFriendView.bounds), 
          CGRectGetMidY(self.addFriendView.bounds)); 

, а также, просто для надежности:

self.addFriendView.center=CGPointMake(CGRectGetMidX(self.view.bounds), 
             CGRectGetMidY(self.view.bounds)); 
Смежные вопросы