无法在 UIView 中居中 UITextField
Posted
技术标签:
【中文标题】无法在 UIView 中居中 UITextField【英文标题】:Can't centre UITextField in UIView 【发布时间】:2015-02-11 18:08:58 【问题描述】:我正在尝试将我的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
的坐标或框架内?
【问题讨论】:
这段代码在什么方法中? 也许类似的 Stack Overflow 问题会有所帮助:***.com/questions/8908510/…Good lucky 【参考方案1】:那是因为addFriendView.center
是它在其父视图坐标中的中心,即150, 25
。你想要的是把nameField
的中心放在addFriendView
的中心addFriendView
的坐标中。
所以,使用这个:
nameField.center = CGPointMake(CGRectGetMidX(addFriendView.bounds),
CGRectGetMidY(addFriendView.bounds));
更新为使用CGRectGetMidX
和CGRectGetMidY
。
【讨论】:
更好的是使用 CGRectGetMid* 方法,它们适用于任何矩形:nameField.center = CGPointMake(CGRectGetMidX(addFriendView.bounds), CGRectGetMidY(addFriendView.bounds));【参考方案2】:因为您已将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));
【讨论】:
以上是关于无法在 UIView 中居中 UITextField的主要内容,如果未能解决你的问题,请参考以下文章
使用 AutoLayout 在 UIScrollView 中居中固定 UIView