首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS UISearchBar 取消按鈕自定義背景圖片:遍歷 subviews 找到 UIButton 設置圖片

     編輯:程式設計綜合問答

UISearchBar 的取消按鈕是內部 UIButton,遍歷 subviews 找到類型為 UIButton 的視圖設置背景圖片。

代碼實現

for (UIView *subview in searchBar.subviews) {
    if ([subview isKindOfClass:[UIButton class]]) {
        UIButton *cancelButton = (UIButton *)subview;
        cancelButton.enabled = YES;
        [cancelButton setBackgroundImage:[UIImage imageNamed:@"yourImageName"] forState:UIControlStateNormal];
        break; // 找到即退出
    }
}

注意事項

  • 需在 searchBar 佈局完成後調用(如 viewDidLayoutSubviews 或搜索框成為第一響應者後)。
  • iOS 版本差異可能導致視圖層級變化,建議遞歸遍歷:
- (void)customizeCancelButton:(UIView *)view {
    for (UIView *sub in view.subviews) {
        if ([sub isKindOfClass:[UIButton class]]) {
            UIButton *btn = (UIButton *)sub;
            [btn setBackgroundImage:[UIImage imageNamed:@"cancel_bg"] forState:UIControlStateNormal];
        } else {
            [self customizeCancelButton:sub]; // 遞歸
        }
    }
}

現代替代:UIAppearance

[[UIButton appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] 
    setBackgroundImage:[UIImage imageNamed:@"cancel_bg"] forState:UIControlStateNormal];

遍歷視圖樹定制原生控件細節,UIAppearance 更優雅全局生效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved