标题 | iOS中UIAppearance使用 |
内容 | iOS5及其以后提供了一个比较强大的工具UIAppearance,我们通过UIAppearance设置一些UI的全局效果,这样就可以很方便的实现UI的自定义效果又能最简单的实现统一界面风格,它提供如下两个方法。 + (id)appearance 这个方法是统一全部改,比如你设置UINavBar的tintColor,你可以这样写:[[UINavigationBar appearance] setTintColor:myColor]; + (id)appearanceWhenContainedIn:(Class <>)ContainerClass,... 这个方法可设置某个类的改变:例如:设置UIBarButtonItem 在UINavigationBar、UIPopoverController、UITabbar中的效果。就可以这样写 [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIPopoverController class],[UITabbar class] nil] setTintColor:myPopoverNavBarColor]; 请注意*使用appearance设置UI效果最好采用全局的设置,在所有界面初始化前开始设置,否则可能失效。 支持UIAppearance协议的类可以访问appearance selector ,它为receiver返回appearance proxy,我么可以给proxy发一些消息,诸如setTintColor:等 但是它并不是支持所有的UI类。下面列出它支持的类 1.UIActivitiIndicatorView 2.UIBarButtonItem 3.UIBarItem 4.UINavgationBar 5.UIPopoverControll 6.UIProgressView 7.UISearchBar 8.UISegmentControll 9.UISlider 10.UISwitch 11.UITabBar 12.UITabBarItem 13.UIToolBar 14.UIView 15.UIViewController 具体UI外观修改如下: 1.修改导航栏背景 代码如下: UINavigationBar * appearance = [UINavigationBar appearance]; UIImage *navBackgroundImg =[UIImage imageNamed:@"navBg.png”]; [appearance setBackgroundImage:navBackgroundImgforBarMetrics:UIBarMetricsDefault]; 2.标签栏(UITabbar) 代码如下: UITabBar *appearance = [UITabBar appearance]; //设置背景图片 [appearance setBackgroundImage:[UIImage imageNamed:@"tabbar_bg.png"]]; //门置选择item的背景图片 UIImage * selectionIndicatorImage =[[UIImageimageNamed:@"tabbar_slider"]resizableImageWithCapInsets:UIEdgeInsetsMake(4, 0, 0,0)] ; [appearance setSelectionIndicatorImage:selectionIndicatorImage]; 3.分段控件(UISegmentControl) 代码如下: UISegmentedControl *appearance = [UISegmentedControl appearance]; //Segmenteg正常背景 [appearance setBackgroundImage:[UIImage imageNamed:@"Segmente.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; //Segmente选中背景 [appearance setBackgroundImage:[UIImage imageNamed:@"Segmente_a.png"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; //Segmente左右都未选中时的分割线 //BarMetrics表示navigation bar的状态,UIBarMetricsDefault 表示portrait状态(44pixel height),UIBarMetricsLandscapePhone 表示landscape状态(32pixel height) [appearance setDividerImage:[UIImage imageNamed:@"Segmente_line.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [appearance setDividerImage:[UIImage imageNamed:@"Segmente_line.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [appearance setDividerImage:[UIImage imageNamed:@"Segmente_line.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; //字体 NSDictionary *textAttributes1 = @{UITextAttributeFont: [UIFont systemFontOfSize:18], UITextAttributeTextColor: [UIColor blueColor], UITextAttributeTextShadowColor: [UIColor whiteColor], UITextAttributeTextShadowOffset: [NSValuevalueWithCGSize:CGSizeMake(1, 1)]}; [appearance setTitleTextAttributes:textAttributes1 forState:1]; NSDictionary *textAttributes2 = @{UITextAttributeFont: [UIFont systemFontOfSize:18], UITextAttributeTextColor: [UIColor whiteColor], UITextAttributeTextShadowColor: [UIColor blackColor], UITextAttributeTextShadowOffset: [NSValuevalueWithCGSize:CGSizeMake(1, 1)]}; [appearance setTitleTextAttributes:textAttributes2 forState:0]; 4.UIBarbutton 注意:UIBarbutton有leftBarButton,rightBarButton和backBarButton,其中backBarButton由于带有箭头,需要单独设置。 barButton背景设置是ios6.0及以后的,而backbutton是ios5.0及以后的,这里要注意! 代码如下: //修改导航条上的UIBarButtonItem UIBarButtonItem *appearance = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]; //设置导航栏的字体包括backBarButton和leftBarButton,rightBarButton的字体 NSDictionary *textAttributes = @{UITextAttributeFont: [UIFontsystemFontOfSize:18], UITextAttributeTextColor: [UIColorblueColor], UITextAttributeTextShadowColor: [UIColorwhiteColor], UITextAttributeTextShadowOffset: [NSValuevalueWithCGSize:CGSizeMake(1, 1)]}; [appearance setTitleTextAttributes:textAttributes forState:1];//forState为0时为下正常状态,为1时为点击状态。 //修改leftBarButton,rightBarButton背景效果 [appearance setBackgroundImage:[UIImage imageNamed:@"navBarButton.png"] forState:UIControlStateNormal style:UIBarButtonItemStyleBordered barMetrics:UIBarMetricsDefault]; [appearance setBackgroundImage:[UIImage imageNamed:@"navBarButton_a.png"] forState:UIControlStateHighlighted style:UIBarButtonItemStyleBordered barMetrics:UIBarMetricsDefault]; //backBarButton需要单独设置背景效果。只能在ios6.0以后才能用 [appearance setBackButtonBackgroundImage:[UIImage imageNamed:@"nav_bg.png"] forState:0 barMetrics:UIBarMetricsDefault]; [appearance setBackButtonBackgroundImage:[UIImage imageNamed:@"work.png"] forState:1 barMetrics:UIBarMetricsDefault]; [appearance setBackButtonTitlePositionAdjustment:UIOffsetMake(2, -1) forBarMetrics:UIBarMetricsDefault]; 5.工具栏(UIToolbar) UIToolbar *appearance = [UIToolbar appearance]; //样式和背景二选一即可,看需求了 //样式(黑色半透明,不透明等)设置 [appearance setBarStyle:UIBarStyleBlackTranslucent]; //背景设置 [appearance setBackgroundImage:[UIImage imageNamed:@"toolbarBg.png"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。