GVKun编程网logo

swift 3.0 中使用 xib(swift5.3教程)

5

在本文中,我们将给您介绍关于swift3.0中使用xib的详细内容,并且为您解答swift5.3教程的相关问题,此外,我们还将为您提供关于Cocoa应用程序没有MainMenu.xib、iOSstor

在本文中,我们将给您介绍关于swift 3.0 中使用 xib的详细内容,并且为您解答swift5.3教程的相关问题,此外,我们还将为您提供关于Cocoa应用程序没有MainMenu.xib、iOS storyborad 与 xib 的几点对比、iOS xib 嵌套复用、ios – ViewController_iPad.xib vs ViewController~ipad.xib的知识。

本文目录一览:

swift 3.0 中使用 xib(swift5.3教程)

swift 3.0 中使用 xib(swift5.3教程)

文章写于2016年9月底,Xcode 8,swift 3.0
真是蛋疼,折腾了很长时间,试了网上很多教程,结果又莫名的可以了!

1.方法和OC中一样

将一个xib文件和一个ViewController类进行关联的几步操作:

  1. command + n 创建一个新的文件,选择 User Interface - View 或者 Empty。

  2. 如果选择的是 Empty 就需要在xib文件中,自己创建一个View。

  3. 将xib文件和ViewController类进行绑定,点击左上角的 File''s Owner,在右边的选项的中的第三个选项卡的第一个栏目中写入需要绑定的类名。

  4. 将xib中的view和self.view进行关联,按住control 从File''s Owner连线到view。

或者
 在创建ViewController文件时,可以选择直接创建一个关联完毕的xib文件。默认已经帮你完成上面几步。
图片描述
注: 当一个视图控制器类,有相关联的xib文件时(文件名相同),在执行内部loadView方法时,会自动的去读取xib,所以这样就能实现了。

说明:以上方法和OC中完全一样,在swift项目中也一样可以实现。但是我第一次弄的时候莫名的出现问题,现在测试可以使用。网上的内容说还需要以下部分才能实现,个人测试以下的内容也需要在xib文件绑定和关联之后才可用。(个人觉得没必要,特定环境下需要以下内容)

2.在该类中复写 init

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}

convenience init() {
    var nibNameOrNil = String?("ViewController")//这里根据自己xib名
    
    //考虑到xib文件可能不存在或被删,故加入判断
    if Bundle.main.path(forResource: nibNameOrNil, ofType: "xib") == nil {
        
        nibNameOrNil = nil
    }
    
    self.init(nibName: nibNameOrNil, bundle: Bundle.main)
}

required init(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

Cocoa应用程序没有MainMenu.xib

Cocoa应用程序没有MainMenu.xib

对于iOS( Cocoa Touch),可以去你的main.m,并将UIApplicationMain(int argc,char * argv [],nil,nil))中的第四个参数替换成应用程序的委托的类名,然后构造视需要.但是,可可(Mac)项目在main.m中有以下几个:

return NSApplicationMain(argc,(const char **)argv);

所以问题基本上是:如何在没有MainMenu.xib的情况下将应用程式委托给Cocoa应用程序?

解决方法

可以使用NSApplication实例的setDelegate方法.以下是一个示例:

AppDelegate * delegate = [[AppDelegate alloc] init];
[[NSApplication sharedApplication] setDelegate:delegate];
[NSApp run];

至于返回值,可以使用EXIT_SUCCESS

iOS storyborad 与 xib 的几点对比

iOS storyborad 与 xib 的几点对比

关于storyborad 与 xib的区别有很多现在简述下自己遇到的几点

1、cell的复用

cell 若要多个tableview复用,只能单独创建cell,不能在storyborad中布局cell,这样的话仅仅是当前table可用,别的不能复用 

参考:http://stackoverflow.com/questions/9245969/in-a-storyboard-how-do-i-make-a-custom-cell-for-use-with-multiple-controllers

 2、cell的创建

在storybord中tableview上可以直接布局cell,而在xib中tableview上不可以直接布局cell

 3、添加scroview

关于添加scroview 之前xib不需要如此设置(16年初时), 现在xib,storyboard都需要

参考: http://www.cnblogs.com/zhun/p/5582049.html

4、layoutguid

storybord 普通VClayoutguid,xib没有。

所以storyboard可以选择参照layoutguid或者superview ,而xib只能选择superview。

参照layoutguid

自动调整到安全区但更改了frame。所以iOS7-11要关闭automaticallyAdjustsScrollViewInsets属性,但11之后UIScrollViewContentInsetAdjustmentAutomatic更加人性化,如果预留了高度就不会再自己更改(本质是因为safeareaInset的引入)

参照superview

iOS7-11自动调整到安全区但更改了contentinset,iOS11更改了safeareaInset.

iOS xib 嵌套复用

iOS xib 嵌套复用

下面是小编 jb51.cc 通过网络收集整理的代码片段。

小编小编现在分享给大家,也给大家做个参考。

/**
 *  可复用组件.用于编写可嵌套的 xib 组件.
 *  
 *  适用场景: 需要静态确定布局的页面内的UI元素的复用性问题.
 *  使用方法: 在xib或storyboard中,将某一用于占位的view的 custom class 设为对一个的 component,则初始化时,会自动使用此component同名的xib文件中的内容去替换对应位置.
 *  注意: 对于可动态确定布局的部分,如tableView中的cell,直接自行从xib初始化即可,不必继承于 MCComponent.
 */
@interface MCComponent : UIView

@end

以上是小编(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给程序员好友。

ios – ViewController_iPad.xib vs ViewController~ipad.xib

ios – ViewController_iPad.xib vs ViewController~ipad.xib

我正在制作一个教程,有趣的东西引起了我的注意.我刚刚创建了一个单视图应用程序项目,我注意到两个.xib文件,一个名为ViewController_iPhone.xib,一个名为ViewController_iPad.xib.在我的项目中,如果我想为iPhone和iPad使用不同的.xibs,我会使用适用于iPhone的ViewController.xib和适用于iPad的ViewController~ipad.xib.我有点明白,这可能是一个新的命名约定,但是如果我针对较旧的iOS版本,我可以使用这个命名约定事件吗?
这也发生在xCode 4.6中

谢谢.

解决方法

我想你可能在iOS上遇到过通用应用程序,或者可能根据设备加载.xib文件.无论哪种方式你应该使用~ipad而不是~iPad和~ iphone而不是
~iPhone让它正常工作.

两者在模拟器上都是一样的,但先前会在设备上丢弃.

请查找Apple参考文献iOS Supports Device-Specific Resources的摘录

iOS支持特定于设备的资源

在iOS 4.0及更高版本中,可以将各个资源文件标记为仅在特定类型的设备上可用.此功能简化了您必须为Universal应用程序编写的代码.您可以让捆绑加载例程选择正确的文件,而不是创建单独的代码路径来为iPhone加载一个版本的资源文件,为iPad加载不同版本的文件.您所要做的就是适当地命名您的资源文件.

要将资源文件与特定设备相关联,请在其文件名中添加自定义修饰符字符串.包含此修饰符字符串会产生具有以下格式的文件名:

.

该字符串表示资源文件的原始名称.它还表示从代码访问文件时使用的名称.同样,字符串是用于标识文件类型的标准文件扩展名.该字符串是区分大小写的字符串,可以是以下值之一:

~ipad - The resource should be loaded on iPad devices only.

~iphone - The resource should be loaded on iPhone or iPod touch devices only.

今天关于swift 3.0 中使用 xibswift5.3教程的讲解已经结束,谢谢您的阅读,如果想了解更多关于Cocoa应用程序没有MainMenu.xib、iOS storyborad 与 xib 的几点对比、iOS xib 嵌套复用、ios – ViewController_iPad.xib vs ViewController~ipad.xib的相关知识,请在本站搜索。

本文标签: