调整UITextField的宽度以在横向上填充工具栏
在UIToolbar
,我已经添加了一个UITextField
到中间的栏(它被作为一个UIBarButtonItem
添加)与旁边的另一个UIBarButtonItem
(动作button)。 我在左边和右边添加了灵活的空格键button项目。 它在纵向上看起来不错,但是当我旋转到横向时,它将它们居中并看起来不错,但是我需要拉伸文本字段来填充宽度,并将最后一个button清除到右侧 – 完全像在Messages中一样iPhone和iPad。
我认为自动布局会做的伎俩,但苹果声明,你不能创buildUIBarButtonItem
的约束。 实际上,当我select任何栏button或文本字段时,将不允许创build任何约束。
你能让我知道如何做到这一点? 谢谢!
编辑:我已经尝试了一些固定/灵活的空间的其他组合。 当我不添加任何时,文本字段和分享button被推到左边:
如果相反,我做固定的空间,它看起来是完全相同的如上0宽度,或者如果我设置一个宽度,那么它显然会推它们。 最右边的最后一个空间没有任何影响 – 它不是固定在最右边,所以它离开了屏幕。
我试了左边的一个固定的空间,右边是一个固定的空间,中间的空间固定(或者没有中间的空间),看起来像上面的截图。 然后我改变了中间的一个灵活,结果是这样的:
如果我把第一个变为灵活的,中间没有(或者如果我添加一个固定的),然后在右侧移动,它会移到右侧:
如果第一个是灵活的,中间是灵活的,右边是固定的,这是它的外观:
在所有情况下,文本字段的宽度与最初在故事板中设置的静态值保持相同。 我认为问题是,当您通过拖动框架来设置宽度时,没有蓝色的指引来捕捉,所以它将始终保持相同的宽度。
我错过任何空间组合吗? 如果我不能在界面生成器中实现所需的行为,那么如何在代码中完成此操作?
要获得一个水平伸展的文本字段,我不得不手动设置它的frame
在viewWillAppear
和方向改变时 – 我使用viewWillTransitionToSize:withTransitionCoordinator:
::
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> __nonnull context) { self.textField.frame = CGRectMake(0, 0, self.navigationController.navigationBar.frame.size.width - self.actionButton.width - 55, self.inputTextField.frame.size.height); } completion:^(id<UIViewControllerTransitionCoordinatorContext> __nonnull context) { }];
以前的解决scheme(在最新的操作系统中不再适用于我):
添加这个viewDidLoad
:
self.textField.autoresizingMask = UIViewAutoresizingFlexibleWidth;