首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《iOS UI 开发捷径 利用 Interface Builder 高效、优雅地开发 UI》 读书笔记第1章 Interface Bundle 概要第2章 使用 Interface Builder第3

关联,也可以与 UIViewController 关联,也可以同时关联 UIView 与 UIViewController 使用 xib 通过 Bundle 方式加载 通过 UINib 方式加载...UIView view.addSubview(testView) } 使用与 UIViewController 子类源文件关联的 xib Demo HomeViewController.swift...} } } IB 文件的加载过程 Bundle 和 UINib 将 nib 加载到内存 解固化并实例化 nib 文件里对应的对象 建立 connections (outlet、action) 调用...用 External Object 重构 VC 只能在于 xib IB 的关键字总结 Swift @IBAction @IBOutlet @IBDesignable @IBInspectable...IB ,但是源文件必须是 UIView 或者 NSView 的子类。

2.4K80
您找到你想要的搜索结果了吗?
是的
没有找到

关于IB_DESIGNABLE IBInspectable的那些需要注意的事

前言 IB_DESIGNABLE / IBInspectable 这两个关键字是WWDC 2014年"What's New in Interface Builder"这个Session里面,用Swift...但是这个类必须是UIView或者NSView的子类。通过@IBInspectable可以定义动态属性,即可在Attributes inspector面板可视化修改属性值。...信息上说Could not load NIB in bundle,并且还给了我们一个类似地址一样的东西'NSBundle (loaded)',我们可以定位到时Xib在从bundle读取出来出错了。...每次我们取mainBundle的时候,都是用的默认的方法 let nib = UINib(nibName: String(StripyView), bundle: nil)复制代码 这里Xib / Storyboard...loadNibNamed是立即加载,调用这个方法加载的xib对象的各个元素都已经存在。

1.5K30

UIViewController生命周期

文件加载Nib文件其实就是xib文件,Storyboard相当于是聚合了多个nib文件,并且添加了对不同的UIViewController之间的segue和relationship的管理。...此时整个视图层次(view hierarchy)已经被放到内存。 无论是nib文件加载,还是通过纯代码编写界面,viewDidLoad方法都会执行。...我们可以重写这个方法,对通过nib文件加载的view做一些其他的初始化工作。比如可以移除一些视图,修改约束,加载数据等。...App,UIWindow是最顶层的界面内容,我们使用UIWindow和UIView来呈现界面。...继承关系来看,UIWindow继承自UIView,所以UIWindow除了具有UIView的所有功能之外,还增加了一些特有的属性和方法,而我们最常用的方法,就是App刚启动时,调用UIWindow的

1.8K10

macOS 开发 - 小基础拾遗

文件非常重要,如果应用程序删除这个文件,会导致App无法启动. 2.运行过程: 系统运行的第一件事就是打开主storyboard(Xcode7以前的版本是打开nib文件),并反序列化其中的内容,...也就是说会对Storyboard文件(Xcode7前的工程是nib文件)的控件,窗口以及其他对象进行解包,并将它们链接到一起....NSView的layer说明: macOS,NSView由于历史原因,并不像iOSUIView一样天然的就带有一个layer图层,这在NSView的使用时,会造成有时通过layer.backgroundColor...(课程的视频里有相关的讲解). 如果希望NSView可以正常使用layer图层,仅仅需要设置wantsLayer 属性为YES(Swift是true)即可....通常情况下,storyboard(或Xib)拖拽的控件,wantsLayer是默认为YES的.

66620

Swift专题讲解十六——ARCSwift的应用

Swift专题讲解十六——ARCSwift的应用 一、引言         ARC(自动引用计数)是Objective-C和Swift中用于解决内存管理问题的方案。...在学习Objective-C编程时经常会学习到一个关于ARC的例子:一个公用的图书馆,每次进入一人就将卡插入,走的时候将自己的卡拔出拿走。...Swift也采用同样的方式进行内存管理。         注意:Swift只有引用类型有自动引用计数,结构体、枚举这类值类型是没有引用计数的。...cls 若引用的实例被释放后,其另一个实例的引用也将被置为nil,所以weak只能用于optional类型的属性,然而在开发还有一种情况,某个类必须保有另一个类的示例,这个实例不能为nil,但是这个属性又不能影响其原始实例的释放...= MyClassEight() obj7=nil 除了两个类实例间会产生循环引用,闭包,也可能出现循环引用,当某个类包含一个闭包属性,同时这个闭包属性又使用了类实例,则会产生循环引用,示例如下

1.2K20

Xcode 添加 Swift package 依赖

要尝试,请打开 ContentView.swift 并将此导入添加到顶部: import SamplePackage 是的,外部依赖关系现在是一个模块,我们可以需要的任何地方导入它。...现在,我们可以我们看来尝试它。例如,我们可以模拟一个简单的彩票,方法是制作一个1到60的数字范围,选择7个数字,将它们转换为字符串,然后将它们连接为一个字符串。...这提供了一个random()方法,该方法接受一个整数,并将以随机顺序您的序列返回多达该数量的随机元素。彩票号码通常按照从小到大的顺序排列,因此我们将对其进行排序。...Swift这只需要一行代码,因为序列具有map()方法,通过将函数应用于每个元素,我们可以将一种类型的数组转换为另一种类型的数组。...我们的例子,我们希望每个整数初始化一个新的字符串,因此我们可以将String.init用作要调用的函数。

6.1K10

View编程指南(三)

view controller中使用nib文件时,只需使用nib文件信息初始化view controller即可。view controller适当的时候处理view的加载和卸载。...但是,如果您的nib文件未与view controller关联,则可以使用NSBundle或UINib对象手动加载nib文件内容,该对象使用nib文件的数据来重构view对象。...使用Interface Builder时,将结果view层次结构保存在一个nib文件,在运行时加载,因为需要相应的view。...无论是以编程方式创建view还是nib文件加载view,都可以viewDidLoad方法包含其他view配置代码。...iOS应用程序,有几种地方和方法可以执行这些操作: VC: view controller必须在显示它们之前创建其view。它可以从一个nib文件加载view或以编程方式创建它们。

1.7K30

Swift 编写脚本:Git Hooks

本例,我使用了 commit-msg 钩子,它能够在当前提交信息生效前修改此信息。钩子由一个参数调用,该参数是指向包含用户输入的提交消息的文件的路径。...为什么我使用Swift? Git hooks可以使用任何你熟悉的,并且主机上安装了解释器(通过shebang来指定)的脚本语言来编写。...为此, macOS 下选择 Command Line Tool 创建一个新的项目。 创建的文件顶部加上Swift shebang,引入Foundation库。 #!...检索提交消息 要做的第一件事就是脚本传进来的参数检索临时提交文件的路径然后读取文件内容。...在下面的截屏,创建了两个分支,一个带有问题编号,一个没有,它们有着相同的提交信息。可以看出脚本运行正常,并且只需要时才更改提交消息!

1.5K10

设计模式之创建型模式

示例语言选用静态语言 Swift(其实个人认为设计模式主要还是针对静态语言,很多模式动态语言中都用处不大)。...创建型模式简介 创建型模式将实例化对象的部分系统独立出来,它们将系统具体使用哪些类的信息封装起来,并隐藏了这些类是如何被创建和组合的,对外只提供一个通用接口。...像 Self、JavaScript 这样基于原型的语言可以说处处都用到了原型模式,而像SmallTalk、OC、Ruby 等动态语言中,类本身可以当作对象传递并用其创建实例对象,甚至 Swift 也可以直接用所谓的元类型...(当然本例其实最终构造的产品都是UIView,是可以提供一个统一接口的)。...但在 Swift ,只要使用let声明一个常量,用它指向一个实例,它的 immutable 性质可以保证线程安全,然后把对应的构造器设为 private 就可以了,像这样: private let instance

62840

深入了解 iOS 的初始化

iOS 里,视图控件类,如果:UIView、UIViewController就有两个指定初始化器,分别代表代码初始化、Nib初始化 Convenience Initializers 便利初始化器是类...Objective-C ,子类会直接继承父类所有的初始化方法 Swift Swift ,初始化器的规则严格且复杂,目的就是为了使代码更加安全,如果不符合规则,会直接报错,常常会让刚接手 Swift...如果不是可以多个不同的源初始化,最好只创建一个指定初始化器 • 无论 Objective-C 还是 Swift ,都需要在便利初始化器调用指定初始化器 • Objective-C ,初始化的时候不需要保证所有属性...必须重写旧的定初始化器,在里面调用新的指定初始化器 • Swift ,初始化的时候需要保证类(结构体、枚举)的所有非可选类型属性都会有值 • Swift ,必须在初始化完成后才能调用实例属性...• Swift ,子类如果没有新创建一个指定初始化器,并且没有重写父类的指定初始化器,则会继承父类的指定初始化器和便利初始化器 • Swift ,子类如果新创建一个指定初始化器,或者重写了父类的某个指定初始化器

94810

iOS开发——GCDSwift的变脸

在看文档的过程,发现GCD的变化跟OC相比简直都要不认识了,赶紧写个文章总结下,顺手复习下GCD死锁的概念,死锁的总结发布另一篇文章里了。...GCD 的这个语法模式无论是和 Objc 还是 Swift 的整体风格都不太搭调。 所以 Swift 3 对它的语法进行了彻底的改写。...比如最常用的,一个异步队列读取数据, 然后再返回主线程更新 UI, 这种操作新的 Swift 语法是这样的: DispatchQueue.global().async { DispatchQueue.main.async...即可,也就是说,大概是这样: DispatchQueue.main.async { [weak self] in your code runs in main thread } 优先级 无论代码长度...希望这篇文章能帮你节省查阅文档的时间, 闲暇时刻了解一些技术点。

2.2K20
领券