无法将UITextField置于UIView中心

时间:2015-02-11 18:08:58

标签: ios xcode uiview uitextfield

我试图将UITextField添加到位于表格中心的UIViewUIView工作正常并且位置正确。但是UITextField位于错误的位置并且位于屏幕的左下角。代码如下:

    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;
    nameField.placeholder=@"enter username";
    [self.addFriendView addSubview:nameField];
    [self.tableView.superview addSubview:self.addFriendView];

当我将UITextField放在UIView的中心时,坐标是否需要位于UIView坐标或框架内?

2 个答案:

答案 0 :(得分:2)

那是因为addFriendView.center是它的超级视图坐标{150, 25}的中心。您想要的是将nameField的中心置于addFriendView坐标中addFriendView的中心。

所以,请使用:

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

更新后使用CGRectGetMidXCGRectGetMidY代替。

答案 1 :(得分:0)

由于您已将nameField添加为self.addFriendView的子视图,因此其中心需要与self.addFriendView相关。

nameField.center=self.view.center;

这一行导致了您的问题。事实上,这也是您分配self.addFriendView 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));