Hacky way 解决 iOS 7 UISearchBar 默认文本居左展示问题

参考:ON IOS 7 UISEARCHBAR LEFT ALIGN PLACEHOLDER TEXT?

控件代码:https://gist.github.com/CoCrash/de56f5f0b70b7eb6d6e3

一个私有方法setCenterPlaceholder,在调用时修改这个布尔值可以实现修改位置的效果。

1 @interface NSCodingSearchBar : UISearchBar
2
3 // Default by the system is YES.
4 // https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/UISearchBar.h
5 @property (nonatomic, assign, setter = setHasCentredPlaceholder:) BOOL hasCentredPlaceholder;
6
7 @end

实现文件:

 1 @implementation NSCodingSearchBar
 2
 3
 4 // ------------------------------------------------------------------------------------------
 5 #pragma mark - Initializers
 6 // ------------------------------------------------------------------------------------------
 7 - (instancetype)initWithFrame:(CGRect)frame
 8 {
 9     if ((self = [super initWithFrame:frame]))
10     {
11         self.hasCentredPlaceholder = YES;
12     }
13
14     return self;
15 }
16
17
18 // ------------------------------------------------------------------------------------------
19 #pragma mark - Methods
20 // ------------------------------------------------------------------------------------------
21 - (void)setHasCentredPlaceholder:(BOOL)hasCentredPlaceholder
22 {
23     _hasCentredPlaceholder = hasCentredPlaceholder;
24
25     SEL centerSelector = NSSelectorFromString([NSString stringWithFormat:@"%@%@", @"setCenter", @"Placeholder:"]);
26     if ([self respondsToSelector:centerSelector])
27     {
28         NSMethodSignature *signature = [[UISearchBar class] instanceMethodSignatureForSelector:centerSelector];
29         NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
30         [invocation setTarget:self];
31         [invocation setSelector:centerSelector];
32         [invocation setArgument:&_hasCentredPlaceholder atIndex:2];
33         [invocation invoke];
34     }
35
36 }
37
38
39 @end
时间: 2024-11-15 00:42:38

Hacky way 解决 iOS 7 UISearchBar 默认文本居左展示问题的相关文章

iOS中UISearchBar(搜索框)使用总结

iOS中UISearchBar(搜索框)使用总结 初始化:UISearchBar继承于UIView,我们可以像创建View那样创建searchBar     UISearchBar * bar = [[UISearchBar alloc]initWithFrame:CGRectMake(20, 100, 250, 40)];     [self.view addSubview:bar]; @property(nonatomic)        UIBarStyle              ba

解决iOS 使用腾讯信鸽推送sdk编译链接不能通过的问题

默认demo,在64bit模拟器上会link不过: target 中的 architectures 的valid architectrues里面,去掉 arm64, build active architecture only: 改为no 解决iOS 使用腾讯信鸽推送sdk编译链接不能通过的问题

解决ios双击页面上移问题

做webapp时,ios有个默认双击事件,会缩放页面,并将当前点击的位置居中到屏幕,本来也没什么,但是当页面中有fixed定位的元素时,这时候你就会神奇的发现,fixed元素所见不所得了! 还有就是页面会上移... //解决ios双击页面上移问题 //在项目中测试不紧input/button这些表单控件有这个问题,p,div等也有问题,于是乎就直接在body开刀了 (function() { var agent = navigator.userAgent.toLowerCase(); //检测是

如何解决IOS 动画中 Autolayout 与View Transforms的冲突

IOS 的动画放大与缩小,并非按照找它的中心点放大和缩小,而是左上角 .我分析了下原来是Autolayout 与View Transforms的冲突造成的. - (void) addSubviewWithZoomInAnimation:(UIView*)view duration:(float)secs option:(UIViewAnimationOptions)option { // first reduce the view to 1/100th of its original dimen

移动端上传照片 预览+draw on Canvas demo(解决iOS等设备照片旋转90度的bug)

背景: 本人的一个移动端H5项目,需求如下: 手机相册选取或拍摄照片后在页面上预览 然后绘制在canvas画布上. 这里,我们先看一个demo(http://jsfiddle.net/q3011893/83qfqpk8/embedded/) 操作步骤: 1.点击选择文件,拍摄一张照片,此时"预览:"文字下会显示你刚才拍摄的照片: 2.再点击"draw on Canvas",该按钮下的画布会绘制你刚才拍摄的照片. 正常的结果: 正文: 让input file支持拍照+

解决ios、微信移动端的position: fixed; 支持性不好的问题 && 禁用下拉暴露黑底的功能

解决ios.微信移动端的position: fixed; 支持性不好的问题 在chrome中的多个部分使用了position: fixed之后,都可以正常的布局,但是放在微信上却出现了不能正常显示的问题(第一个问题). 并且使用了postion: fixed; 的一个种类名称栏在微信下下滑不了,而body是可以的,确实让人很郁闷(第二个问题). 对于第二个问题,我们可以采取的方式是使得微信不能下滑暴露出 powered by ... 的字样. 但是对于第一个问题,确实没有很好的解决方法. 所以就

点击文本框清除默认文本离开再恢复

点击文本框清除默认文本离开再恢复:很多网站的需要填写的文本框在默认状态下都会给出一个默认的提示语言,当鼠标点击此文本框的时候能够将里面的默认文本清除,当删除输入的文本且焦点离开文本框的时候再将默认的文本写入文本框.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://

CSS改变默认文本选中的颜色的方法

请选择本页面文本看看:http://hovertree.com/h/bjaf/38hq6y9d.htm 一般情况下在网页里的文本我们用鼠标选中的时候都是蓝色的,这个默认颜色也是可以更改的,本文我们学习如何使用CSS3实现改变默认文本选中的颜色.以我的系统举例(xp 默认主题),浏览器上页面文字选中后默认的背景色是一种蓝色, 不同浏览器的颜色有些许差异,但大致相同,文字颜色也近乎白色. 一.关于浏览器文字选中颜色:在CSS3的爸爸 妈妈还没有相亲认识的时候,要改变页面上文字选中后的背景色以及文字颜

解决IOS safari在input focus弹出输入法时不支持position fixed的问题

该文章为转载 我们在做移动web应用的时候,常常习惯于使用position:fixed把一个input框作为提问或者搜索框固定在页面底部.但在IOS的safari和webview中,对position:fixed的支持不是很好(在IOS5之前甚至还不支持position:fixed).我遇到的其中一个问题就是,在iOS6+环境下,input focus弹出输入法的时候,设置了position fixed的input框浮在页面上了,而不是吸附在软键盘上.效果如图(图片来源于网上): 而Androi