iOS11-UISearchBar居中placeholder和icon

UISearchBar在ios11上的placeHolder和icon默认居左了。。。

SearchBar-left.png

下面是实现的居中的效果:

SearchBar-Center.png

实现方法,自定义UISearchBar:

//  placeholder 和icon 和 间隙的整体宽度
// @property (nonatomic, assign) CGFloat placeholderWidth;

//  在layoutSubviews里默认先居中
if (@available(iOS 11.0, *)) {
        [self setPositionAdjustment:UIOffsetMake((field.frame.size.width-self.placeholderWidth)/2, 0) forSearchBarIcon:UISearchBarIconSearch];
 } 
       
// 实现textfield的代理方法
// 开始编辑的时候重置为靠左
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
// 继续传递代理方法
     if ([self.delegate respondsToSelector:@selector(searchBarShouldBeginEditing:)]) {
        [self.delegate searchBarShouldBeginEditing:self];
    }
    if (@available(iOS 11.0, *)) {
        [self setPositionAdjustment:UIOffsetZero forSearchBarIcon:UISearchBarIconSearch];
    }
    return YES;
}

// 结束编辑的时候设置为居中
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField {
     if ([self.delegate respondsToSelector:@selector(searchBarShouldEndEditing:)]     {
        [self.delegate searchBarShouldEndEditing:self];
    }
    if (@available(iOS 11.0, *)) {
        [self setPositionAdjustment:UIOffsetMake((textField.frame.size.width-self.placeholderWidth)/2, 0) forSearchBarIcon:UISearchBarIconSearch];
    }
    return YES;
}

这样效果就和ios11以前一样的效果了。。
完整代码下载

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,180评论 4 61
  • 如今,距离许嵩发行的第一张唱片《自定义》已经8年。许嵩的年代,随着他的三十岁,随着我们青春过去,也都过去了。 7月...
    Miss_Shallow阅读 1,637评论 20 8
  • 儿童节快乐!六一快乐! 我其实对六一已经没有太多期许了,甚至只是将它当作六月的开端。长大了,就忘了这个节日,是不应...
    麦子飞呀飞阅读 211评论 0 0
  • 1.不是所有的推迟都叫拖延。切勿过于责怪自己没有完成任务,你必须正确的给所有延迟的事情进行分类。 2.现如今是一个...
    丶欧阳先生阅读 499评论 0 0
  • 最近项目用到RAC,下面简单记录一下自己的学习内容~ 什么是ReactiveCocoa? ReactiveCoco...
    小球why阅读 1,070评论 0 7