ios UISearchBar 修改搜索框文字大小

搜索頁面

一、問題描述
通過以下設(shè)置在ios13之前有效,在ios13之后會造成設(shè)置字體大小失效,

for (UIView *subView in [[searchBar.subviews lastObject] subviews]) {
            if ([[subView class] isSubclassOfClass:[UITextField class]]) {
                UITextField *textField = (UITextField *)subView;
                textField.font = [UIFont systemFontOfSize:14];
                _searchTextField = textField;
                break;
            }
 }
因為打印searchBar.subviews.lastObject.subviews在ios13之前:
<__NSArrayM 0x2818fc210>(
<UISearchBarBackground: 0x1064f6160; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0x281617240>>,
<UISearchBarTextField: 0x10681e000; frame = (0 0; 0 0); text = ''; opaque = NO; layer = <CALayer: 0x2816145e0>>
)
在ios13之后:
<__NSArrayM 0x282d96940>(
<UISearchBarBackground: 0x1063c5500; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0x282300f00>>,
<_UISearchBarSearchContainerView: 0x1063c5920; frame = (0 0; 0 0); autoresize = W; gestureRecognizers = <NSArray: 0x282d76d30>; layer = <CALayer: 0x282301400>>
)

所以if里面的設(shè)置不再執(zhí)行。

二、解決方法

在ios13之后UISearchBar暴露了UITextField屬性,這點算是蘋果的優(yōu)化,方便取了,但是你搞下兼容啊......

現(xiàn)在如下設(shè)置:
if (@available(iOS 13.0, *)) {
        UITextField *tf = searchBar.searchTextField;
        tf.font = [UIFont systemFontOfSize:14];
    } else {
        for (UIView *subView in [[searchBar.subviews lastObject] subviews]) {
            if ([[subView class] isSubclassOfClass:[UITextField class]]) {
                UITextField *textField = (UITextField *)subView;
                textField.font = [UIFont systemFontOfSize:14];
                _searchTextField = textField;
                break;
            }
        }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容