如何更改 UISearchBar 中的 UITextField 位置?
有没有办法在 UISearchBar 中重新定位 UITextField ? 我想将 UISearchBar 内的 UITextField 向上移动一点。
Is there a way to reposition UITextField inside UISearchBar?
I'd like to move UITextField inside UISearchBar up a little bit.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
UITextField 方法不再起作用,可能是由于 UISearchBar 对象的重新设计。 UISearchBar 在屏幕上显示时会调整其 UITextField 的大小,这会使 UITextField 上的所有操作无效。
但是,我发现 UISearchBar 响应
setContentInset:
方法(在 iOS 5.0.1 上测试)。它调整距封闭视图的插入距离。这导致了涉及 NSInitation 的复杂方法:
上面的代码使用
anInsets
参数中指示的 CGRect 调整 UISearchBar(实际上是 UITextField)的contentInset
的大小。父 if 语句 (respondsToSelector:
) 可以避免新版本 iOS 中此行为的变化。针对 Swift3 和 iOS10 进行了更新:
The UITextField approach is not working anymore, probably due to a restyling of the UISearchBar object. UISearchBar resizes its UITextField when it is presented on screen, this invalidates all manipulations on the UITextField.
However, I discovered that UISearchBar responds to the
setContentInset:
method (tested on iOS 5.0.1). It adjusts the inset distance from the enclosing view.This result in a sophisticated approach involving NSInvocation:
The above code resizes the
contentInset
of the UISearchBar (effectively UITextField) using the CGRect indicated in theanInsets
parameter. The parent if-statement (respondsToSelector:
) saves yourself from changes of this behaviour in new versions of iOS.Updated for Swift3 and iOS10:
Swift 4+
你可以试试这个。
它不会移动文本字段,但会移动文本。这对于大多数人来说应该足够了。
Swift 4+
You can try this.
It doesn't move the textField, but moves the text. This should be enough for most people.
最好的解决方案是更改 orientationLayoutMargins
The best solution is changing of directionalLayoutMargins