我试图将UITextField
添加到位于表格中心的UIView
。 UIView
工作正常并且位置正确。但是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
坐标或框架内?
答案 0 :(得分:2)
那是因为addFriendView.center
是它的超级视图坐标{150, 25}
的中心。您想要的是将nameField
的中心置于addFriendView
坐标中addFriendView
的中心。
所以,请使用:
nameField.center = CGPointMake(CGRectGetMidX(addFriendView.bounds),
CGRectGetMidY(addFriendView.bounds));
更新后使用CGRectGetMidX
和CGRectGetMidY
代替。
答案 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));