本文译自:8 Tips for working effectively with Interface Builder(墙)
先来看看目录:
- 介绍
- 使view的Size与view中的Content相适应
- 按住option键—观察所选中view与另外view边缘之间的距离
- Editor –> Embed In View, Unembed:
- 在不影响subview的位置时给view自由的添加padding
- 对不在最前端的view进行移动
- IBOutletCollection排序
- 使用自定义属性
- MoarFonts——字体定制:所见即所得
介绍
在JoyTunes工作期间,我们在开发最新一版的钢琴应用程序,对程序的UI做了大量的重新设计,因而也在Interface Builder上花费了许多时间,对于图片和view的缩放操作,非常的让人不省心。不过在开发过程中,我们发现了许多非常不错的IB使用技巧,我寻思着这必须要跟大家分享,所以成就了这篇文章。
免责声明: 在JoyTune工作期间,我们使用的是.xib文件(不是storyboards),并且没有使用Auto Layout。实际上这主要是历史原因导致的。所以,这里介绍的一些技巧可能稍微有点不同(如果你使用storyboard或Auto Layout),不过大多数都是一样的。
1. 使view的Size与view中的Content相适应
很惭愧的是最近才发现这个功能——能节约大量时间。 选中任意的一个view,然后Editor->Size to Fit Content,或者简单的按 ⌘= 接着就会按照下面的规则对选中view的Size做出与之Content对应的适应。
- ImageView/Button的size会设置为图像的原始size(最常见的用法):
- Label/Button的size会被设置为与当前text内容相当的尺寸:
- parent container view会与其subviews的frames相适应。
2. 按住option键—观察所选中view与另外view边缘之间的距离
按住option键之后,选择一个view,然后将鼠标悬停在别的一些view上,会看到一些距离——选中view与别的view边缘之间的距离。
3. Editor –> Embed In View, Unembed:
你是不是对此素手无策呢:你希望将已有的一些subviews放入到不同的parent view中,甚至是不同的.xib文件中,但是当你把一些view重新设置之后,它们为自动的位于新的parent view中心?
现在好了,我们有一个解决办法,如下图所示:
4. 在不影响subview的位置时给view自由的添加padding
当试图给view添加padding时,默认情况下subview的x和y是不会改变的,但是有时候我们并不希望是这样的结果。我发现一个最好的方法,就是在按住⌘时拖动view的边缘:
5. 对不在最前端的view进行移动
刚开始我还以为要想移动不在最前端的view是不可行的。
有一种方法就是先将非最前端的view临时设置到最前端,移动好位置之后,在设置回去。
另外一种方法就是使用右边panel中的size inspector,不过有时候要想设置一个好的位置,需要不断的猜测和修正。
另外我发现一种方法:使用键盘上的上下左右键来移动view——这还不用把view设置为最前端:
- 在document outline中选中view
- 为了获得view的焦点:单击root view的frame
- 利用箭头进行移动
提醒: 获得view的焦点还有一个更好的方法:在document outline上双击view,就可以用箭头移动view了。
6. IBOutletCollection排序
有时候IBOutletCollection里面元素的顺序对我们来说非常重要:我们希望按某个顺序对其进行迭代。
有一种方法:在代码里面利用x/y/tag对其做排序处理,然后在迭代。
实际上,没必要这么做。IBOutletCollection的顺序取决于我们dragged connection的顺序,可以通过^+单击 File’s Owner来查看当前的顺序:
7. 使用自定义属性
可能这个功能是IB中很少被使用的:使用Identity inspector中的User Defined Runtime Attributes(用户自定义运行时属性)在view上设置自定义属性:
在此我定义了一个JTLabel类,我们可以设置它的stroke color和width,这样一来我们就不用在代码里面设置相关属性了。
利用这个功能很好的一例子就是Canvas,通过它不用写一行代码就能定义相关的动画。
8. MoarFonts——字体定制:所见即所得
在Interface Builder中字体的定制是个非常麻烦的事情。IB并没有内置该功能,我用过比较好的解决办法就是使用自定义属性——就像Canvas一样,或者使用字体替换技术——例如IBCustomFonts。这些都是有效的方案,不过他们有一个致命的缺点——它们不能给我们一种WYSIWYG(所见即所得)的体验,当然,这也是为什么我们会第一时间使用Interface Builder的原因。
为了知道给label设置的自定义字体是否合适,我们必须要运行程序才能知道结果——这有点让人不能接受。
最近我发现了一个新的解决办法:使用MoarFonts。卖价10美元,没有demo,没有试用——不过请相信,这非常值得购买!它的使用方法非常简单:将MoarFonts当做script build phase,然后build app,接着重启Xcode,就可在Interface Builder中看到定制的字体。
打完收工!希望这些技巧对你能有所帮助。
via:beyondvincent
相关推荐
- 学习C++ Builder 5中的性能调优技巧,如何减少内存消耗,提高程序运行效率。 9. **错误处理和调试**: - 熟悉IDE的调试工具,学习如何设置断点,查看变量值,跟踪程序执行。 10. **项目管理**: - 理解工程...
这个工具以其高效的编译器、直观的可视化界面设计和丰富的组件库而闻名,使得C++Builder5成为当时程序员的热门选择。这本书《C++Builder5编程实例与技巧》作为经典入门教材,将帮助初学者快速掌握C++Builder5的基本...
"PowerBuilder 102个绝对实用技巧"可能包含了一系列提高开发效率、优化代码质量、解决常见问题的窍门和最佳实践。下面,我们将深入探讨其中可能涵盖的一些关键知识点。 1. **数据窗口控件**:PowerBuilder的核心...
C++ Builder 5是由Borland公司推出的,它结合了C++语言的高效性和VCL(Visual Component Library)的可视化设计能力,为开发者提供了一个强大的开发工具。 在C++ Builder 5中,程序员可以利用其内置的IDE快速创建...
《C++Builder5.0高级开发技巧与范例》是一本深入探讨C++Builder5.0编程技术的专业书籍,旨在帮助开发者掌握高级开发技巧并提供实际应用范例。BCB,即Borland C++ Builder,是Borland公司推出的可视化C++集成开发环境...
8. **调试技巧**:学会使用PowerBuilder的调试工具,如设置断点、查看变量值、跟踪调用栈等,对于定位和解决问题非常有帮助。 9. **版本控制集成**:与版本控制系统如Git或SVN集成,可以协同开发,跟踪代码变更,...
本精品课件将深入探讨PowerBuilder的核心特性和使用技巧,帮助学习者掌握这款软件的强大功能。 1. **PowerBuilder概述**: PowerBuilder是一个基于事件驱动的可视化开发环境,它提供了数据窗口(DataWindow)、...
《C.Builder5高级技巧与范例配套代码》涵盖了C++Builder这一强大开发工具的多个核心领域,包括系统与窗体设计、文件操作、图形图像处理、数据库编程、网络编程、多线程应用以及COM组件编程。这个压缩包提供的源代码...
源码管理对于团队协作至关重要,书中可能涵盖了版本控制系统如Git的集成使用,以及如何利用C++Builder的内置调试器进行高效的问题定位和代码优化。源码阅读和分析能力也是程序员必备的技能,这部分内容可能涉及如何...
这本书旨在帮助程序员和系统架构师充分利用PowerBuilder的功能,提高开发效率,创建出高效、稳定的业务应用程序。 PowerBuilder 6.0是Sybase公司推出的一款可视化、面向对象的编程环境,特别适合于快速开发企业级的...
4. Script Editor:是编写应用程序逻辑的地方,支持PBNI(PowerBuilder Native Interface)和PBL(PowerBuilder Library)两种脚本语言。通过编写脚本,可以实现数据验证、业务逻辑处理和事件响应等功能。 在这个...
总的来说,《PowerBuilder 9.0精彩编程百例》源代码是一个宝贵的资源库,它将帮助开发者快速上手PowerBuilder,通过实例学习,掌握其核心技术和应用技巧。无论是初学者还是有经验的开发者,都能从中受益匪浅。
第八章可能详细介绍了不同类型的脚本(如窗口脚本、事件脚本),并提供了编写高效、可维护脚本的技巧。 4. **业务对象(Business Objects)**:这是PowerBuilder的面向对象特性之一,用于封装和管理业务逻辑。第八...
在IT行业中,Borland C++ Builder是一款深受程序员喜爱的集成开发环境(IDE),它结合了C++语言的强大力量和...通过深入学习和实践,你可以成为一个熟练的Borland C++ Builder开发者,创造出高效、功能丰富的应用程序。
PowerDesigner 15 提供了一个集成的环境,允许开发人员、数据库管理员和业务分析师协同工作,从需求分析到系统设计,再到最终的代码生成,实现了高效的软件开发流程。 **PowerDesigner** 的核心功能包括: 1. **...
4. **编译器优化**:C++Builder6的编译器提供了多种优化选项,可以生成高效的机器码,提高程序运行速度。 5. **数据库支持**:内置的BDE(Borland Database Engine)和ADO(ActiveX Data Objects)接口使得数据库...
9. **图形和多媒体编程**:C++ Builder支持图形和多媒体功能,文档可能涵盖GDI+(Graphics Device Interface Plus)和DirectX的相关内容。 10. **网络编程**:学习如何在C++ Builder中实现网络通信,如HTTP请求、...
8. **图形和多媒体编程**:通过GDI(Graphics Device Interface)和第三方库,开发者可以创建丰富的图形界面和多媒体应用。 9. **网络编程**:C++ Builder 5 支持Socket编程,可以构建网络通信应用。指南会介绍如何...
学习"C++Builder与API"的经典范例,不仅能够提升C++Builder的编程技巧,还能深入理解Windows系统的工作机制。通过实践这些示例,开发者可以编写出更高效、更灵活的桌面应用程序。在阅读和分析这些范例时,需要注意...
本主题主要围绕"PowerBuilder编程经验谈"展开,旨在分享关于PowerBuilder的编程技巧和实践经验。 1. **PowerBuilder简介**:PowerBuilder是由Sybase公司(现被SAP收购)开发的一款可视化的面向对象的集成开发环境...