欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS代码实现布局(一)—不使用StoryBoard和Xib

程序员文章站 2022-06-21 20:47:26
最近在学习ios开发,因为是团队开发所以在写布局的时候就不使用StoryBoard和Xib了,直接纯代码来设计布局。目录删除相关文件和设置配置信息删除StoryBoard去掉Info.plist里面的信息修改项目信息在AppDelegate中设置运行后黑屏问题删除相关文件和设置配置信息删除StoryBoard直接Move to Trash即可去掉Info.plist里面的信息点击减号即可修改项目信息将Main Interface置空在AppDelegate中设置把StoryBoar...

最近在学习ios开发,因为是团队开发所以在写布局的时候就不使用StoryBoard和Xib了,直接纯代码来设计布局。

删除相关文件和设置配置信息

删除StoryBoard

直接Move to Trash即可
iOS代码实现布局(一)—不使用StoryBoard和Xib

去掉Info.plist里面的信息

点击减号即可
iOS代码实现布局(一)—不使用StoryBoard和Xib

修改项目信息

将Main Interface置空
iOS代码实现布局(一)—不使用StoryBoard和Xib

在AppDelegate中设置

把StoryBoard删掉之后,我们就必须手动创建一个Viewcontroller并且设置其为根控制器
注意要导入相应的类
AppDelegate.h

#import <UIKit/UIKit.h>

@class ViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>{
    UIWindow * window;
    ViewController * viewController;
}

@property (nonatomic, strong) UIWindow * window;
@property (nonatomic, strong) ViewController * viewController;

@end

AppDelegate.m

#import "AppDelegate.h"
#import "ViewController.h"

@interface AppDelegate ()
@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
       self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];//创建一个Window
        self.window.backgroundColor=[UIColor whiteColor]; //
        self.viewController= [[ViewController alloc] init]; //创建一个VC
        UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:self.viewController];
    //    nav.navigationBar.hidden = YES;
        self.window.rootViewController=nav; //设置好根视图控制器
        [self.window makeKeyAndVisible]; //设置这个window为主(key)窗口并设置成为可见
    return YES;
}

记住要把下面的部分注释掉
iOS代码实现布局(一)—不使用StoryBoard和Xib
然后在ViewController.h里和ViewController.m设计的你的布局就OK了。然后运行。

运行后黑屏问题

在AppDelegate和ViewController都设置好后运行,没有报错但是黑屏。那么问题出在哪里呢?
编译器显示的问题是:[WindowScene] There is no scene delegate set. A scene delegate class must be specified to use a main storyboard file.
解决方法:将Info.plist -> Open As -> Source Code将划框的部分删除。
iOS代码实现布局(一)—不使用StoryBoard和Xib
然后就可以运行成功,显示自己设计的界面啦。

本文地址:https://blog.csdn.net/qq_43133382/article/details/108560817

相关标签: ios objective-c