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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。