Mat*_*ift 3 constraints frame ios autolayout swift
我一直试图调整UITextField的大小以适应和延伸整个UINavigationBar,但一直没有成功.我知道这是世界上最简单的问题,但我没有注意到.感谢您的帮助,我很感激.

这不是世界上最简单的问题.事实上,这是相当棘手的.
你不能使用约束来做到这一点. UINavigationBar负责布置其子视图.Xcode知道这一点,所以它不允许你在文本字段上设置约束.
导航栏会通过发送文本字段询问文本字段的sizeThatFits:大小,并提供允许的最大大小,因此一种方法是创建一个UITextField返回该最大值的子类.这有效:
@implementation MyTextField
- (CGSize)sizeThatFits:(CGSize)size {
return size;
}
@end
Run Code Online (Sandbox Code Playgroud)
另一种方法是使文本字段非常宽,让导航栏缩小它以适应.您需要在旋转时重置宽度,因为导航栏一旦收缩就不会再拉伸文本字段.在视图控制器中创建连接到文本字段的插座,并在布局之前更新宽度.这有效:
@interface ViewController ()
@property (strong, nonatomic) IBOutlet UITextField *textField;
@end
@implementation ViewController
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
[self widenTextField];
}
- (void)widenTextField {
CGRect frame = self.textField.frame;
frame.size.width = 10000;
self.textField.frame = frame;
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2295 次 |
| 最近记录: |