2019-08-22 00:22:17 HD6870 阅读数 178

    现在新版本的Xcode新建iOS项目的时候都是默认用Main.storyboard当第一个主页面了,也没得选.xib模式。有时候要删掉.storyboard,手动自建.xib。

1、先右键删掉Main.storyboard,垃圾桶可以直接清空了。

2、Info.plist文件里面删掉 Main storyboard file base name 一行。

3、删完了不要运行,运行也是黑屏。新建自定义的.xib。

4、最后 AppDelegate.m 文件里面 didFinishLaunchingWithOptions 方法加上几句话:

    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

    ShouDongMainView *sd = [[ShouDongMainView alloc] init];

    self.window.rootViewController = sd;

    [self.window makeKeyAndVisible];

然后运行。

2016-06-08 16:00:19 IT_ZGC 阅读数 1120

Xcode6和iOS 8以后,苹果给开发者新添加了一种配置启动图的方式LaunchScreen.xib

笔者觉得,这种方式的优势在于无需做多张启动图进行适配,LaunchImage需要美工做多张图,而LaunchScreen.xib可以自适应布局,做一张图就够了。

不过,笔者建议为了更好的适配,免除图片拉伸造成的不好的效果,可以在Images.xcassets,添加一个命为Default的图片集~But,这种方式有个巨大的坑啊~楼主现在还没爬上来~

由于笔者接手的是别人的项目,启动图也没有更换过,一直没有动过这块,也没有太在意。最近由于有更换启动图的需求,开始着手搞启动图这块的内容。原来外包用的是LaunchScreen.xib这种方式,在改这一块的时候,把这两种方式都选了~然后,问题出现了


启动图选择方式
关于启动图黑屏

测试的时候发现,有的时候处出现黑屏的现象,百度了一下,有人说好像是两种方式混用的结果。原来,iOS8以后的系统默认LaunchScreen.xib方式,之前的系统选择LaunchImage方式。然后我们就选择了LaunchImage这种更加稳定可靠的方式。启动图黑屏的问题果然不存在了

安装过旧版本的App启动图无法更换

由于笔者的手机频繁的删除应用,没有发现这个问题。产品经理在安装测试版的App后出现启动图没有更换的问题~删了应用重装也不行
So,问题来了~What happend?

笔者开始了漫长的测试~~~

  • 先用 LaunchScreen.xib方式添加启动图A,运行工程,App启动图为A,然后更换启动图为B
    • 启动图添加方式更换为LaunchImage方式,运行工程,App启动图为A
    • 启动图添加方式更换为LaunchImage方式,删掉App,运行工程,App启动图为B
    • 启动图添加方式不更换,运行工程,App启动图为A
    • 启动图添加方式不更换,删掉App,运行工程,APP启动图为A
    • 启动图添加方式不更换,重启手机,运行工程,APP启动图为A
    • 启动图添加方式不更换,删掉App,重启手机,运行工程,APP启动图为B
  • 先用 LaunchImage方式添加启动图A,运行工程,App启动图为A,然后更换启动图为B
    • 启动图添加方式不更换,运行工程,App启动图为B
    • 启动图添加方式更换为 LaunchScreen.xib,运行工程,App启动图为B
  • LaunchImage与LaunchScreen.xib混用没有测试,因为在iOS8系统以后,默认使用LaunchScreen.xib,效果和第一种是一样的,感兴趣的读者可以测试一下
为什么用 LaunchScreen.xib方式添加启动图会出现上面的效果?笔者做了一些小小的测试

开始笔者觉得,可能是使用xib方式,系统会在App沙盒保存一份启动图,就下载一个软件iFunBox

安装好,点击应用


屏幕快照 2016-03-17 下午5.43.43.png

这里我们可以看到,平时我们在程序里操作的几个文件夹


屏幕快照 2016-03-17 下午5.44.02.png

点击Library


屏幕快照 2016-03-17 下午5.44.13.png

点击Caches


屏幕快照 2016-03-17 下午5.44.23.png

点击Snapshots,


屏幕快照 2016-03-17 下午5.44.35.png

果然找到了启动图


屏幕快照 2016-03-17 下午5.44.49.png

而LaunchImage模式,不会生成这张图片

笔者原本以为,这张图就是App每次启动时要拿的图。在LaunchScreen.xib模式下,就删掉了这张图,重新运行工程。然而,笔者期待的景象并未发生,即便更换成启动图B,App的启动图仍然为A,同时在这个文件夹下,启动图A又出现了。so,这张图并不是App启动时调用的。其实,出现启动图添加方式不更换,删掉App,运行工程,APP启动图为A这种结果时,就证明笔者的思路是错的,因为此时这个文件夹已经不存在了,说明App启动后启动图在App沙盒之外进行了保存,即保存在了iOS系统本身的某些缓存文件下。

启动图添加方式不更换,删掉App,重启手机,运行工程,APP启动图为B,则证明,iOS系统缓存的这些文件,只有重启手机才能删掉,不重启的话,这些信息在App重新安装的时候,依然可用,具体保存在哪,笔者真心没找到~

所以,LaunchScreen.xib这种添加启动图的方式,建议读者不要使用,不如读者如果解决这种问题~建议通知笔者~跪谢

总结:在LaunchScreen.xib模式下,Snapshots文件夹下的这张图片每次在App启动的时候都会更新。因为这张图片是系统对启动图进行截屏得到的,但是App启动时调用的那张图片是在App首次使用LaunchScreen.xib模式时用的那张图片,系统对这张图片进行了保存,只要这张图片存在,无论采用什么模式,都会调用这张图片。而能够删除这张图片的唯一方式,就是删掉程序,重启手机。



问题解决了:笔者将LaunchScreen.xib更换成了LaunchScreen.storyboard就能进行更换了。而且LaunchScreen.storyboard创建的启动图是可以随时更换的。可能是因为Xcode7以后,苹果主推LaunchScreen.storyboard而取代了LaunchScreen.xib。


2015-09-10 09:19:29 u013375242 阅读数 1995

1.Images.xcassets添加LaunchImage

2.具体大小和添加类别都是可以调的


3.选中LaunchScreen.xib,去掉右边选项use as launch screen 

4.在launch Image Source 选中你所添加的launchImage ,再把Launch Screen File 置为空(这个很重要)

5.OK,运行,现在启动图就会显示。要是还是不显示,那就是那个步骤写错了,仔细检查,好的开发人员要锻炼自己的耐心和细心。好了不多侃了,有什么问题也可以问我。

2014-12-13 14:19:04 u012242853 阅读数 440
MainWindow.xib
Posted on 2011-06-16 by Jeroen Trappers

In the XCode 4.2 beta, MainWindow.xib is no longer included by default in some project templates. This means that you have to get your application to work by writing some code, using another method, or by manually reconstructing MainWindow.xib. This post shows the latter. Let’s get started.

Start with Empty Application template

If you create a new project in XCode 4.2 beta, and choose the Empty Application template to start from, change nothing and try running it in your iPhone 5.0 simulator, you will see an empty – black – screen. The only thing you get from the template is an xAppDelegate.h and .m.

We will now reconstruct our own MainWindow.xib, to get started with development the way you’re used to. So the next thing we do is add a New File to the project. Choose iOS > User Interface > Empty as template. Add Empty Interface Builder documentNext, choose iPhone, next give it the name MainWindow (.xib will be added automatically). By the way, the name of the file is not very important, but it’s nice to choose MainWindow, because that’s familiar.

Select the new File we just created. What we have now is an empty design surface, in what used to be Interface Builder. Here we’re going to change some things.

The empty design surface of MainWindow.xib

  • Change the class of File’s Owner to UIApplication

Change class of File's Owner to UIApplication

  • Find Object in the Library and drag it onto the Objects pane on the left.

Add Object to the document

  • Change the class of that Object to the xAppDelegate class that was created by the template, you might also want to clear out the “Object” label.

Change class of the object to xAppDelegate

  • Add a Window to the Objects pane on the left.

Add a window to the document

Now, let’s bind it all together. To do this, we first need to change some of the code in the xAppDelegate.h. We have to add IBOutlet to the window property it has, so that we can  hook it up in Interface Builder. The xAppDelegate.h should read something like this:

@interface DemoAppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) IBOutlet UIWindow *window; @end

Don’t forget to save the file, otherwise Interface Builder will not be able to pick up the Outlet. Next we continue editing the MainWindow.xib

  • Control-Drag from the delegate outlet of the File Owner to the xAppDelegate object.

Link the application delegate

  • Control-Drag from the window outlet of the xAppDelegate to the Window.

Link the window outlet of the app delegate

  • Just for this demo, I’m adding a label to the window.

Add a label for testing

We’re not done yet, but we’re almost there.

  • Navigate to the project, and in the Summary tab, select MainWindow as the Main Interface.

Set the Main Interface to MainWindow

You can now run the project in the Simulator, and the window should show up. However there’s one last thing you might want to clean up. In xAppDelegate.m, there was actually code that creates a window as well. Just put the method

- (BOOL) application:didFinishLaunchingWithOptions:

in comment.

we're done

 

 

I hope this helps to understand exactly how an iOS app starts. The next thing you should do is add a ViewController, and push it onto the MainWindow. I’m not going to cover that here. Please leave your feedback in the comments.


2015-11-06 18:31:53 HONEY_NO_1 阅读数 323

iOS Interface Builder:在.xib文件中加载另一个.xib文件

在开发中,经常会用到一个需要重复使用的模块,比如好友列表中每个用户的展示或每条动态,这些都是相同的模版,这样我们就可以把这个部分提取出来放到一个单独的.xib中。那么提取出的.xib如何在其他.xib中使用呢?

接下来就说一下如何在.xib中加载其他的.xib。大概结构是这样的:

 

创建项目,项目名称叫CompositeXib

 

创建MainView和ChildView,ChildView将作为子View包含到MainView中。

 

创建完成后是这样的:

设置ChildView的Size可以自定义,去掉状态栏:

 设置大小:

 

添加控件:一个ImageView,一个Label和一个Button,添加完成后你的View应该是这样的:

添加ChildView.xib对应的Cocoa Class文件:

.m 添加setup方法:

 .h 添加view属性:

 连接此Cocoa Class和ChildView.xib:

 

这样,一个子view已经准备好了。

 

在主.xib添加一个view控件并设置它的Class为上边准备好的ChildView:

 

运行:

 

备注:将MainView.xib添加到storyboard的方法和将ChildView.xib添加到MainView.xib的方法类似,只需设置storyboard中目标View的Custom Class属性为MainView即可。

作者:backslash112 
出处:http://sirkevin.cnblogs.com/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

LaunchScreen.Xib

阅读数 3002

没有更多推荐了,返回首页