我有一个包含许多视图控制器的项目,我希望它们都具有平铺背景图像的父视图。现在我可以做到
[[UIView appearance] setBackgroundColor:
[UIColor colorWithPatternImage:[UIImage imageNamed:@"BackgroundPattern"]]];
问题是,这还将设置所有其他UIView
子类化对象(UIButtons
,UILabels
等)的背景。如何更改UIView
背景?
答案 0 :(得分:6)
如果您在班级使用appearance
代理,则别无选择。您将修改每个UIView
子类。
我没有看到许多其他选项来继承UIViewController
,只更改该子类'视图的外观,然后创建第一个的所有其他UIViewController
子类。
答案 1 :(得分:3)
您可以在每种类型上创建类别,并添加一个设置角半径的UIAppearance选择器。
UIView + Appearance.h文件:
#import <UIKit/UIKit.h>
@interface UIView (Appearance)
- (void)setCornerRadius:(CGFloat)cornerRadius UI_APPEARANCE_SELECTOR;
@end
UIView + Appearance.m文件:
#import "UIView+Appearance.h"
@implementation UIView (Appearance)
- (void)setCornerRadius:(CGFloat)cornerRadius {
self.layer.cornerRadius = cornerRadius;
}
@end
AppDelegate.m文件:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[[UIView appearanceWhenContainedIn:[ViewController class], nil] setCornerRadius:5.0];
return YES;
}
答案 2 :(得分:2)
你可以创建一个UIViewController的子类,调用它像MyTiledViewController,在init / viewDidLoad方法中写这个...
[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"BackgroundPattern"]]];
修改强> 看起来Gabriele Petronella打败了我,真的是这样。