《iOS 6核心开发手册(第4版)》——2.17节构建工具栏

    xiaoxiao2024-04-18  11

    本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第2章,第2.17节构建工具栏,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看

    2.17 构建工具栏iOS 6核心开发手册(第4版)如果给自己提供了几个方便的宏定义,就很容易在代码中定义和布置工具栏。下面的宏将为4种可用的项目样式返回适当的栏按钮项目,如果在代码中需要更多的控制选项,还可以轻松地修改它们。这些宏打算用于自动引用计数(Automatic Reference Counting,ARC)。如果使用手动保留—释放(Manual Retain-Release,MRR)开发,就要确保利用合适的自动释放调用来修改它们。

    #define BARBUTTON(TITLE, SELECTOR) [[UIBarButtonItem alloc] \ initWithTitle:TITLE style:UIBarButtonItemStylePlain\ target:self action:SELECTOR] #define IMGBARBUTTON(IMAGE, SELECTOR) [[UIBarButtonItem alloc] \ initWithImage:IMAGE style:UIBarButtonItemStylePlain \ target:self action:SELECTOR] #define SYSBARBUTTON(ITEM, SELECTOR) [[UIBarButtonItem alloc] \ initWithBarButtonSystemItem:ITEM \ target:self action:SELECTOR] #define CUSTOMBARBUTTON(VIEW) [[UIBarButtonItem alloc] \ initWithCustomView:VIEW]

    这些样式是文本项目、图像项目、系统项目和自定义的视图项目。其中每个宏都提供了一个可以放在UIToolbar中的UIBarButtonItem。程序清单2-2演示了这些宏的使用,显示了如何添加每种样式,包括间隔。甚至可以向工具栏中添加自定义的视图,就像程序清单2-2所做的那样。它将插入一个UISwitch实例,作为栏按钮项目之一,如图2-11所示。

    图2-11 自定义的栏项目可以包括诸如这个选项开关之类的视图

    固定空间的栏按钮项目代表需要移到这些方便的宏之外的唯一实例。必须设置项目的width属性,定义项目将占据多大的空间。下面列出了几条最终的提示。

    固定的空间可以具有宽度。在所有的UIBarButtonItem中,只有UIBarButtonSystem ItemFixedSpace项目可以指定一个宽度。因此要创建间隔项目,设置其宽度,直至此时才把它添加到你的项目阵列中。使用单一灵活的空间以便于进行左、右对齐。在项目列表的开头添加单个UIBarButtonSystemItemFlexibleSpace,对所有其余的项目进行右对齐。在左对齐的末尾添加一个项目,使用两个项目(一个在开头、一个在末尾)创建居中对齐。考虑遗漏的项目。当没有使用布局约束时,如果由于上下文而隐藏栏按钮项目,就不要只使用灵活的间隔来清除项目。可代之以利用与项目的原始尺寸匹配的固定宽度的空间替换项目。这可以保留布局,以及在项目消失前后使所有其他的图标保持在相同位置。导航栏现在支持多个项目。从iOS 5.0开始,导航栏及其导航项目现在允许添加栏按钮项目的数组。如果过去曾经向导航栏中添加了工具栏,就可以代之以添加项目数组(例如,self.navigationItem.rightBarButtonItems = anArray)。这里列出的所有工具栏提示(包括灵活的间隔)也都适用于导航栏项目布局。

    最新回复(0)