【发布时间】:2015-02-27 03:09:26
【问题描述】:
在viewDidLoad中,我创建了一个searchBar,将它设置为navigationBar里面的titleView,并调用appearanceWhenContainedIn来获取searchBar里面文字的字体大小。当视图第一次加载时,appearanceWhenContainedIn 工作正常,但是当 viewController 被关闭然后再次推送时,appearanceWhenContainedIn 方法虽然被调用,但它不起作用。处理 viewDidLoad 中的相同代码,但结果不同。这怎么可能发生?
override func viewDidLoad() {
super.viewDidLoad()
var searchBar:UISearchBar = UISearchBar()
searchBar.frame = CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width, height: 20)
searchBar.autocapitalizationType = UITextAutocapitalizationType.None
searchBar.delegate = self
searchBar.searchBarStyle = UISearchBarStyle.Minimal
searchBar.sizeToFit()
searchBar.tintColor = UIColor.whiteColor()
searchBar.placeholder = "username"
searchBar.barTintColor = UIColor.whiteColor()
searchBar.backgroundColor = UIColor.clearColor()
self.navigationItem.titleView = searchBar
AppearanceBridge.setAppearance()
}
代码是用 Swift 编写的,我找不到 Swift 的 appearanceWhenContainedIn,所以我在一个虚拟类中调用了一个 Objective-C 方法。 (AppearanceBridge.setAppearance())
@import UIKit;
#import "AppearanceBridge.h"
@implementation AppearanceBridge
+ (void)setAppearance {
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setFont:[UIFont systemFontOfSize:17]];
[[UILabel appearanceWhenContainedIn:[UISearchBar class], nil] setFont: [UIFont systemFontOfSize:17]];
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor whiteColor]];
}
@end
我同时包含 .h 和 .m 文件,因为我没有使用 Objective-C 的经验,并且代码可能有问题。
#import <Foundation/Foundation.h>
@interface AppearanceBridge : NSObject
+ (void)setAppearance;
@end
谢谢!
【问题讨论】:
标签: ios objective-c swift uisearchbar uiappearance