iosuiappearance使用详解.docx
《iosuiappearance使用详解.docx》由会员分享,可在线阅读,更多相关《iosuiappearance使用详解.docx(11页珍藏版)》请在冰豆网上搜索。
iosuiappearance使用详解
iOS UIAppearance使用详解
+(id)appearance
这个方法是统一全部改,比如你设置UINavBar的tintColor,你可以这样写:
[[UINavigationBar
appearance]setTintColor:
myColor];+(id)appearanceWhenContainedIn:
(Class
<>)ContainerClass,...
这个方法可设置某个类的改变:
例如:
设置UIBarButtonItem
在UINavigationBar、UIPopoverController、UITabbar中的效果。
就可以这样写
[[UIBarButtonItemappearanceWhenContainedIn:
[UINavigationBar
class],[UIPopoverControllerclass],[UITabbarclass]nil]
setTintColor:
myPopoverNavBarColor];请注意*使用appearance设置UI效果最好采用全局的设置,在所有界面初始化前开始设置,否则可能失效。
具体UI外观修改如下:
1.修改导航栏背景
代码如下:
UINavigationBar*appearance=[UINavigationBar
appearance];
UIImage*navBackgroundImg=[UIImageimageNamed:
@"navBg.png”];
[appearancesetBackgroundImage:
navBackgroundImgforBarMetrics:
UIBarMetricsDefault];2.标签栏(UITabbar)
代码如下:
UITabBar*appearance=[UITabBarappearance];
//设置背景图片
[appearancesetBackgroundImage:
[UIImageimageNamed:
@"tabbar_bg.png"]];
//门置选择item的背景图片
UIImage*
selectionIndicatorImage=[[UIImageimageNamed:
@"tabbar_slider"]resizableImageWithCapInsets:
UIEdgeInsetsMake(4,
0,0,
0)];
[appearancesetSelectionIndicatorImage:
selectionIndicatorImage];3.分段控件(UISegmentControl)
代码如下:
UISegmentedControl*appearance=[UISegmentedControl
appearance];
//Segmenteg正常背景
[appearancesetBackgroundImage:
[UIImageimageNamed:
@"Segmente.png"]
forState:
UIControlStateNormal
barMetrics:
UIBarMetricsDefault];
//Segmente选中背景
[appearancesetBackgroundImage:
[UIImageimageNamed:
@"Segmente_a.png"]
forState:
UIControlStateSelected
barMetrics:
UIBarMetricsDefault];
//Segmente左右都未选中时的分割线
//BarMetrics表示navigation
bar的状态,UIBarMetricsDefault
表示portrait状态(44pixel
height),UIBarMetricsLandscapePhone
表示landscape状态(32pixel
height)
[appearancesetDividerImage:
[UIImageimageNamed:
@"Segmente_line.png"]
forLeftSegmentState:
UIControlStateNormal
rightSegmentState:
UIControlStateNormal
barMetrics:
UIBarMetricsDefault];
[appearancesetDividerImage:
[UIImageimageNamed:
@"Segmente_line.png"]
forLeftSegmentState:
UIControlStateSelected
rightSegmentState:
UIControlStateNormal
barMetrics:
UIBarMetricsDefault];
[appearancesetDividerImage:
[UIImageimageNamed:
@"Segmente_line.png"]
forLeftSegmentState:
UIControlStateNormal
rightSegmentState:
UIControlStateSelected
barMetrics:
UIBarMetricsDefault];
//字体
NSDictionary*textAttributes1=@{UITextAttributeFont:
[UIFontsystemFontOfSize:
18],
UITextAttributeTextColor:
[UIColorblueColor],
UITextAttributeTextShadowColor:
[UIColorwhiteColor],
UITextAttributeTextShadowOffset:
[NSValuevalueWithCGSize:
CGSizeMake(1,1)]};
[appearancesetTitleTextAttributes:
textAttributes1
forState:
1];
NSDictionary*textAttributes2=@{UITextAttributeFont:
[UIFontsystemFontOfSize:
18],
UITextAttributeTextColor:
[UIColorwhiteColor],
UITextAttributeTextShadowColor:
[UIColorblackColor],
UITextAttributeTextShadowOffset:
[NSValuevalueWithCGSize:
CGSizeMake(1,1)]};
[appearancesetTitleTextAttributes:
textAttributes2
forState:
0];4.UIBarbutton
注意:
UIBarbutton有leftBarButton,rightBarButton和backBarButton,其中backBarButton由于带有箭头,需要单独设置。
barButton背景设置是ios6.0及以后的,而backbutton是ios5.0及以后的,这里要注意!
代码如下:
//修改导航条上的UIBarButtonItem
UIBarButtonItem*appearance=[UIBarButtonItemappearanceWhenContainedIn:
[UINavigationBarclass],
nil];
//设置导航栏的字体包括backBarButton和leftBarButton,rightBarButton的字体
NSDictionary*textAttributes=@{UITextAttributeFont:
[UIFontsystemFontOfSize:
18],
UITextAttributeTextColor:
[UIColorblueColor],
UITextAttributeTextShadowColor:
[UIColorwhiteColor],
UITextAttributeTextShadowOffset:
[NSValuevalueWithCGSize:
CGSizeMake(1,1)]};
[appearancesetTitleTextAttributes:
textAttributes
forState:
1];//forState为0时为下正常状态,为1时为点击状态。
//修改leftBarButton,rightBarButton背景效果
[appearancesetBackgroundImage:
[UIImageimageNamed:
@"navBarButton.png"]
forState:
UIControlStateNormal
style:
UIBarButtonItemStyleBordered
barMetrics:
UIBarMetricsDefault];
[appearancesetBackgroundImage:
[UIImageimageNamed:
@"navBarButton_a.png"]
forState:
UIControlStateHighlighted
style:
UIBarButtonItemStyleBordered
barMetrics:
UIBarMetricsDefault];
//backBarButton需要单独设置背景效果。
只能在ios6.0以后才能用
[appearancesetBackButtonBackgroundImage:
[UIImageimageNamed:
@"nav_bg.png"]
forState:
0
barMetrics:
UIBarMetricsDefault];
[appearancesetBackButtonBackgroundImage:
[UIImageimageNamed:
@"work.png"]
forState:
1
barMetrics:
UIBarMetricsDefault];
[appearancesetBackButtonTitlePositionAdjustment:
UIOffsetMake(2,
-1)
forBarMetrics:
UIBarMetricsDefault];5.工具栏(UIToolbar)UIToolbar*appearance=[UIToolbarappearance];
//样式和背景二选一即可,看需求了
//样式(黑色半透明,不透明等)设置
[appearancesetBarStyle:
UIBarStyleBlackTranslucent];
//背景设置
[appearancesetBackgroundImage:
[UIImageimageNamed:
@"toolbarBg.png"]
forToolbarPosition:
UIToolbarPositionAny
barMetrics:
UIBarMetricsDefault];