ios – 在becomeFirstResponder上禁用UISearchBar搜索图标和占位符文本动画

用户点击按钮时,我想要显示一个UISearchBar.在buttonPress方法中,我创建了searchBar并将其添加为子视图,然后调用[searchBar becomeFirstResponder].如果我取出这个yesFirstResponder调用,搜索图标和占位符文本将出现在textField的中心.

然后,当搜索栏成为第一响应者时,两个动画都是左对齐的.

因为我正在连续做两个动作,所以我得到了一个奇怪的动画,其中有图标&占位符动画来自(0,0).

如何禁用此动画,以便我可以简单地将第二个图像添加到我的视图中?

编辑:

我通过使用正确显示占位符文本

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    [searchBar setPlaceholder:@"Type Here to Search"];
}

我可以使用[searchBar setPositionAdjustment:UIOffsetMake(x,y)forSearchBarIcon:UISearchBarIconSearch];移动搜索图标,但更改仍然在动画中应用.

解决方法

@ user3429963绝对是 looking正确的方向.这对我有用:
searchBar.becomeFirstResponder()
searchBar.removeLayerAnimationsRecursively()

其中removeLayerAnimationsRecursively()是一个以递归方式从视图层及其子视图的图层中删除动画的函数

extension UIView {

  func removeLayerAnimationsRecursively() {
    layer.removeAllAnimations()
    subviews.forEach { $0.removeLayerAnimationsRecursively() }
  }
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...