在iOS 7 UISearchBar上,占位符文本居中,我想禁用它,并使其始终像以前一样粘在左边.
有一个私有的方法setCenterPlaceholder,在diff和调用这个与BOOL将做出旅程. https://gist.github.com/nscoding/7220368
标题文件
@interface NSCodingSearchBar : UISearchBar // Default by the system is YES. // https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/UISearchBar.h @property (nonatomic,assign,setter = setHasCentredPlaceholder:) BOOL hasCentredPlaceholder; @end
执行文件
#import "NSCodingSearchBar.h" // ------------------------------------------------------------------------------------------ @implementation NSCodingSearchBar // ------------------------------------------------------------------------------------------ #pragma mark - Initializers // ------------------------------------------------------------------------------------------ - (instancetype)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { self.hasCentredPlaceholder = YES; } return self; } // ------------------------------------------------------------------------------------------ #pragma mark - Methods // ------------------------------------------------------------------------------------------ - (void)setHasCentredPlaceholder:(BOOL)hasCentredPlaceholder { _hasCentredPlaceholder = hasCentredPlaceholder; SEL centerSelector = NSSelectorFromString([NSString stringWithFormat:@"%@%@",@"setCenter",@"Placeholder:"]); if ([self respondsToSelector:centerSelector]) { NSMethodSignature *signature = [[UISearchBar class] instanceMethodSignatureForSelector:centerSelector]; NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; [invocation setTarget:self]; [invocation setSelector:centerSelector]; [invocation setArgument:&_hasCentredPlaceholder atIndex:2]; [invocation invoke]; } } @end
我想知道是否有其他的,不是“哈奇的方式”做同样的事情.
解决方法
要在iOS7中保留占位符的左对齐方式,您可以在占位符字符串的末尾添加空格.例如:
_searchBar.placeholder = @"Search ";
请注意,应该为每个搜索栏和每种语言单独完成.
可以尝试在任何语言的文本之后自动计算所需的空格,但是似乎不可能读取searchBar的textField框架的大小
<UISearchBarTextField: 0x1349c160; frame = (0 0; 0 0);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。