(六十二)纯代码搭建UI

在Xcode6中,去掉了Empty Application的选项,因此可以通过先创建SingleView,再删除storyboard,并且把工程设置中的main Interface清空。

通过AppDelegate来创建视图和控制器。

这里演示一个带TabBar与Navigation的,注意TabBar为最底部的根,然后每个Bar的选项绑定一个navigation才是正确的方法,否则无法根据Bar的选项设定navigation的标题。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    self.window.rootViewController = [[UITabBarController alloc] init];
    [self.window makeKeyAndVisible];
    return YES;
}

然后根据相应的控制器代码,修改tabBar,如果要自定义tabBar的点选和未点选状态,通过下面的代码:

home.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"];
home.tabBarItem.selectedImage = [[UIImage imageNamed:@"tabbar_home_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
注意后面的一句,有一个渲染的选项,在iOS7+中,选中时图片会被自动渲染为蓝色,如果要自定义图片要将渲染模式改为Original。

Tip:tabBar的标题、navigation的标题可以通过控制器的title属性进行全局设置:

home.title = @"首页”;

为了iOS6和iOS7+的适配,一般是通过pch定义iOS7的判断,pch文件的路径设置:


Tip:发现工程出现no such file or directory...错误,可以通过工程设置搜索缺少的文件然后像上面这样改路径。

下面给出一个图片适配的例子,具体原理就是做两套图片,iOS7的后缀为_os7,通过拦截图片设置(给UIImage增加分类)来对每张图片进行设置:

注意判断没有_os7结尾图片的情况。

+ (UIImage *)imageWithName:(NSString *)name{
    
    NSString *newName = @"";
    
    if (iOS7) {
        newName = [name stringByAppendingString:@"_os7"];
    }
    
    UIImage *image = [UIImage imageNamed:newName];
    
    // 没有iOS7的图片,使用无后缀图片
    if (image == nil) {
        newName = name;
        image = [UIImage imageNamed:name];
    }
    
    return image;
    
}








原文地址:https://www.cnblogs.com/aiwz/p/6154185.html