ios开发什么是attributes inspector pcb控制面板开发

&&国之画&&&&&&
版权所有 京ICP备号-2
迷上了代码!在开始这章之前,先做个说明,从这篇开始,我所使用的xcode更新成了最新的版本,版本是4.6.1(4H512),如下:
大家可以打开自己电脑上的App Store,然后搜索xcode,第一个出现的就是Xcode,然后直接点击安装就行,很方便且智能,如果你的电脑上有旧版本的xcode,它还会提示你删除,反正整个过程我按住下来还是很容易的。
另外,从这篇开始,我使用的教程也做了相应的升级,现在使用的教程为这个大家去搜一下就可以找到,很方便。
好了,其他的没什么不同,下面开始我们这一篇的学习。
1)Storyboard简介这次学习的内容是在iOS 5的时候才加入的一个新的东西:Storyboard,简单的翻译成&故事版&(好吧,我觉得这个名字蛮挫的),它简化了一些开发app时的一些步骤,例如自动为我们添加必要的delegate/dataSource,在多个view之间的切换,使用图和线连接各个view,让我们能够清晰的看到各个view之间的前后关系。这样的好处是减轻了我们在管理view之前切换时的工作量,能够让我们把更多的注意力集中在具体的功能实现上,然后是我们对整个的app view之间的关系有一个整体的了解。
Storyboard还是基于xib(Xcode's Interface Builder),但是一个Storyboard中又可以包含多个xib,每个xib都一个它自己的controller绑定。好像,下面先举一个简单的例子,来直观的感受一下什么是Storyboard。
2)Create a Simple Storyboard创建一个project,左边选择Application,右边选择Single View Application,点击Next
将项目命名为&Simple Storyboard&,然后选中Use Storyboards,单击Next
找个地方保存新建的项目,完成创建
在project navigator中,默认帮我们创建的文件有很多都是和之前一样的,有BIDAppDelegate,BIDViewController,但是我们没有发现xib文件,取而代之的是一个MainStoryboard.storyboard,在这个storyboard中,藏着一个系统默认帮我们创建的xib,选中MainStoryboard.storyboard,在editor area中,会出现一个xib,而整个xib的controller文件正是BIDViewController,至此所有默认创建的文件都已经对上号了。
打开dock,选中View Controller节点并展开,你会发现,在layout area下的一个黑色区域中显示的图标和dock中是一样的,这个黑色区域和上方的view组成了一个场景,叫做scene。(在scene中还有一个Exit,这个就不作介绍了,因为书本里面也是省略的)在view的左边有一个大大的箭头,这个箭头是用来说明该app的起始view是哪个。
在layout area的右下方有一个小图标,这个是用来切换iphone4和iphone5的(我们的这个例子还是基于iphone4的界面)&
好了,简单的介绍就到这里,下面继续我们这个例子,从Object library中拖一个Label放到view的中间,双击Label,输入&Simple&
好了编译运行你的程序,一个最简单的Storyboard app完成了
当我们使用Storyboard开发app的时候,很多事情程序都会帮我们完成,包括如何载入默认的xib。如果你选中project navigator中的项目名称在editing pane中你可以找到程序默认载入的storyboard,这里例子中默认的storyboard是MainStoryboard.storyboard
3)Storyboard with UITableViewController在之前几篇的例子中,我们已经很多次的使用到了UITableViewController,对其操作的方式应该已经很熟悉了,一般是tableview中包含很多个cell,每个cell有一个identifier,创建cell的时候用到的方法是cellForRowAtIndexPath。在storyboard中,还是会用到这些,但是会相对简单一些,下面我们接着上面的例子做下去。
选中Project navigator中的Simple Storyboard文件夹,单击鼠标右键,选择&New File...&,在弹出的窗口中,左边选择Cocoa Touch,右边选择Objective-C class,点击Next按钮,在下一个窗口中将class命名为BIDTaskListController,Subclass of命名为UITableViewController,点击Next按钮,完成创建。
接着选中MainStoryboard.storyboard,从Object library中拖一个Table View Controller到layout area
在dock中,选中刚才拖入的Table View Controller(这样能够抱着我们选中的是layout area中整个的Table View Controller)打开Identity inspector,将Class设置为BIDTaskListController,当设置完成后,dock中的table view会变成Task List Controller这样我们新加的TableViewController就和它的类对应起来了,tableview也知道它可以去哪里取得它所需要的数据。
在拖入的Table View Controller上,有一个默认的cell(Prototype Cells),我们可以为其添加identifier,在其上面定制自己的cell样式(注意,我们可以添加任意多个Prototype Cells,每个cell用identifier来区分,定制不同的样式,这里的cell只是一个原型,根据原型cell生成正式的cell,之后会有一个这样的例子)。我们选中整个默认的cell,并打开attributes inspector,找到Identifier,输入plainCell
然后从object library中,拖一个Label放到原型cell上,Label如何布局看个人爱好,选中Label,在attributes inspector中找到Tag,将其值设为1,这样在code中就可以通过Tag的值找到Label了。
接着,我们选中整个的cell,你也可以到dock中去选,这样比较准确,然后按Command + D,或者从菜单栏中选择Edit&Duplicate,复制一个cell,这样在table view中就有2个prototype cell了
(这里有一个非常有用的小技巧,当你想直接在view中选择自己想要的元素时,但是又碍于一个view上叠加的元素太多很难直接选中,那么在这时,你同时按住键盘上的shift和control键,然后在你想选择的元素上点击鼠标,会弹出一个窗口,上面罗列了鼠标点击的位置下所有存在的元素,然后你再去进行选择会变的异常的简单。例如我在cell中的Label上点鼠标鼠标点击的位置一共有4个层叠元素
如果我们在cell上点击鼠标Label不见了,只有三个元素。
这么样,用这样的方法去选择元素很简单吧,还是蛮佩服苹果在细节方面的考虑和设计的。)
选中新加的cell,在attributes inspector中将Identifier赋值为attentionCell
选中Label,在attributes inspector中将其颜色设置为红色
好了,对于这个table view的操作全部完成,在开始具体的编写代码之前,还有一件事情,将layout area中的那个大大的箭头移到这个table view上,这样程序在载入的时候默认的会显示这个view
保存一下MainStoryboard.storyboard,下面开始具体的编码。
打开BIDTaskListController.m文件,你会发现很多常用的方法已经存在:viewDidLoaddidReceiveMemoryWarningnumberOfSectionsInTableViewnumberOfRowsInSectioncellForRowAtIndexPathdidSelectRowAtIndexPath我们只要直接往这些方法中填代码就可以了,添加如下代码
#import "BIDTaskListController.h"
@interface BIDTaskListController ()
@property (strong, nonatomic) NSArray *
@implementation BIDTaskListController
- (void)viewDidLoad
[super viewDidLoad];
// Uncomment the following line to preserve selection between presentations.
// self.clearsSelectionOnViewWillAppear = NO;
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonI
self.tasks = @[@"Walk the dog",
@"URGENT: Buy milk",
@"Clean hidden lair",
@"Invent miniature dolphins",
@"Find new henchmen",
@"Get revenge on do-gooder heroes",
@"URGENT: Fold laundry",
@"Hold entire world hostage",
@"Manicure"];
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
#warning Potentially incomplete method implementation.
// Return the number of sections.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
#warning Incomplete method implementation.
// Return the number of rows in the section.
return [self.tasks count];
首先和之前一样,定义一个NSArray类型的tasks,用于保存table view中的行,然后在viewDidLoad中对tasks进行赋值(这里的语法和之前我看到的赋值方法有点不同,越到后面,语句写的越是精炼啊),在numberOfSectionsInTableView中,返回1,表示只有一个section,在numberOfRowsInSection中返回section中row的数量。这些都很简单,接着添加代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSString *identifier =
NSString *task = [self.tasks objectAtIndex:indexPath.row];
NSRange urgentRange = [task rangeOfString:@"URGENT"];
if (urgentRange.location == NSNotFound) {
identifier = @"plainCell";
identifier = @"attentionCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
// Configure the cell...
UILabel *cellLabel = (UILabel *)[cell viewWithTag:1];
NSMutableAttributedString *richTask = [[NSMutableAttributedString alloc] initWithString:task];
NSDictionary *urgentAttributes = @{NSFontAttributeName : [UIFont fontWithName:@"Courier" size:24],
NSStrokeWidthAttributeName : @3.0};
[richTask setAttributes:urgentAttributes range:urgentRange];
cellLabel.attributedText = richT
代码一开始定义了一个identifier,然后根据indexPath获得tasks中的task,NSRange可以认为是一个范围或者一种排列,它根据这个范围或者排列到另一个对象去寻找,如果找到了就返回开始的位置,如果没有找到就返回NSNotFound。NSRange的对象urgentRange定义了一个字段&URGENT&,它在task中进行匹配,如果存在,那么这个cell就把plainCell赋给identifier,如果不存在则将attentionCell赋给identifier。然后根据identifier从tableView的方法dequeueReusableCellWithIdentifier中得到相应的cell。
之后的一段是对cell上的label进行操作,还记得刚才我们在attributes inspector中将Label的Tag设置为1了吗?这里就用到了,使用viewWithTag的方法在cell中找到Label,然后对Label进行赋值,之后的一些操作是对特定的字符串&URGENT&进行操作,更改它的字体属性。这些就一笔带过吧,毕竟我们的注意力不是集中在这个上面,对Label操作完后,将其赋给cellLabel,最后返回cell。
好了,编译运行(编译时会有warning产生,这个不用去理会,编译还是会成功,这些warning是告诉你在Storyboard中有xib是没有被使用的,我们的箭头没有指向它且和当前的view又没有联系,所以不会对其进行操作,有warning是正常的),效果如下
如果task中包含字符串&URGENT&那么将会使用identifier为attentionCell的cell,否则就使用identifier为plainCell的cell。
4)Static Cells在大部分的情况下,table view中的cell都是需要动态生成了,app运行时,根据source的不同生成不同数量或者样式的cell,但是在某些情况下,我们可以事先知道将要生成的cell是什么样子的,且它是固定不变的,我们把这样的cell称之为Static Cells,与其对应的则是dynamic cell。在这里我们举一个简单的例子来说明这种情况。
我们不用创建一个新的project,直接在上面的程序中接着添加代码。选中Project navigator中的Simple Storyboard文件夹,单击鼠标右键,选择&New File...&,在弹出的窗口中,左边选择Cocoa Touch,右边选择Objective-C class,点击Next按钮,在下一个窗口中将class命名为BIDStaticCellsController,Subclass of命名为UITableViewController,点击Next按钮,完成创建。
选中MainStoryboard.storyboard,再从Object library中拖一个Table View Controller到layout area,就放在原有2个view的右边,接着将箭头指向这个新添加的view图中最右边的是新添加的view,这些view看上去比较小,是因为我了layout area右下角的,这样可以方便观察每一个view(当然在缩小的状态下,是没有办法对view进行操作的,只能移动其位置,要操作view,必须将view放大回正常的大小)
选中刚才添加的controller中的table view,打开attributes inspector,找到Content,在其下拉框中选择&Static Cells&,找到Style,在其下拉框中选择&Grouped&
table view的样式也随之发生了变化,出现了3行row,section的样式变成了一个圆角矩形
选中section,在其attributes inspector设置如下,Rows改为2,Header中填写&Silliest Clock Ever&
改完后的section
下面对2个cell进行设置,选中第一个cell,在attributes inspector中将其Style设置为&Left Detail&然后双击Title,改成&The Date&,重复上面的步骤,将第二个cell的Title改成&The Time&,改完后的效果
之后,我们将创建两个outlet对象,分别指向2个Detail,这样在app运行后,就可以改变它们的值了。
现在先关联这个table view controller和它的类,在dock中选中Table View Controller,然后打开identity inspector,在Class中输入&BDIStaticCellsController&,dock中的名字也随之发生改变
还是在dock中选中controller的状态下,将Editor的模式设置成Assistant editor,这样BIDStaticCellsController.h文件会打开(如果打开的不是这个文件,那么就手动打开吧),选中第一个cell中的Detail,然后control-drag到BIDStaticCellsController.h中并释放,会弹出个窗口,将Name命名为&dateLabel&
对第二个cell中的Detail进行相同的操作,将Name命名为&timeLabel&,添加完成后的BIDStaticCellsController.h
#import &UIKit/UIKit.h&
@interface BIDStaticCellsController : UITableViewController
@property (weak, nonatomic) IBOutlet UILabel *dateL
@property (weak, nonatomic) IBOutlet UILabel *timeL
下面开始编写代码,打开BIDStaticCellsController.m,先将下面三个方法删除
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
#warning Potentially incomplete method implementation.
// Return the number of sections.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
#warning Incomplete method implementation.
// Return the number of rows in the section.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
因为我们使用的是static cell,因此table view中section的数量,section中cell的数量都是固定不变的,我们也不需要从新创建cell,cell一共才2个,会一直显示在屏幕上。
接着添加下面的代码
- (void)viewDidLoad
[super viewDidLoad];
// Uncomment the following line to preserve selection between presentations.
// self.clearsSelectionOnViewWillAppear = NO;
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonI
NSDate *now = [NSDate date];
self.dateLabel.text = [NSDateFormatter
localizedStringFromDate:now
dateStyle:NSDateFormatterLongStyle
timeStyle:NSDateFormatterNoStyle];
self.timeLabel.text = [NSDateFormatter
localizedStringFromDate:now
dateStyle:NSDateFormatterNoStyle
timeStyle:NSDateFormatterLongStyle];
在viewDidLoad中,分别对dateLabel和timeLabel进行了设置,至于NSDate和NSDateFormatter的说明大家就去google一下吧,这里不做详细解释了。
编译运行,效果如下
阅读(...) 评论()聪明的iOS开发者的Xcode使用技巧
招聘信息:
本文由译者KingOfOnePiece()翻译,敬请指正。作者:原文:ps:此文原作者赘述太多,译者据原文摘译。用Xcode的快捷方式快速打开你的文件在开始使用Xcode之前就应该强制记忆其快速打开(Open Quickly)的快捷方式。Mac OS X有一个功能叫做Spotlight搜索(空格),可以帮你找到文件和应用程序(包括别的文件)。快速打开就是Xcode的Spotlight搜索。我经常使用快速打开这个快捷方式,因为这是打开一个文件最简单的方法,只要你知道文件的名字或文件中一个方法/公共变量的名称。快速打开的优点是它使用模糊匹配的逻辑。例如,如果我知道该文件的一些概要,我可以键入“概要”,它会给出任何包含“概要”这个词汇名称的文件。技巧:用快速打开搜索一个方法或属性可能会很慢,因为它需要对整个项目进行索引和搜索。你的工程越大这会变得越糟,所以搜索一个方法或者属性时,试一下这么搜:1、使用&command+shift+O&搜索文件并打开。2、使用&control+6&快捷方式打开跳转菜单。3、开始键入名称,发现它时点击进入。这会快得多,因为它只索引单个文件的公共符号而不是在整个工程中。快捷方式:command+shift+O用快捷键和代码片段快速编码我们用了一种不太科学的方式进行测试,用iPhone的秒表测试用鼠标做五个常见的Xcode的事务所花费的时间,我的编码时间中大约有5%花在了Xcode的导航上。根据运行情况,这个测试表明键盘的快捷键要快1.5到3倍。在这个基础上保守估计,在10000小时的职场生涯中,使用Xcode快捷键可以为你节省大约250小时的时间。此外,还有一个学习快捷键的决定性价值。你学习的快捷键越多,你手指放在键盘上的时间越多,更有助于你专注于思路。现在就试一试!开始专注键入一段代码,用鼠标选择和删除一个词汇,然后继续打字。关注思路是如何被打断的?当你在脑海中平衡一个复杂的编程问题时,轻微的打扰就会中断你的思路。。对于哪些想要Xcode更详细UI导航快捷键列表的开发者,可参考以下Xcode界面截图。这些快捷键涉及到Xcode窗口的不同部分。我标记的屏幕区域如下:导航(蓝色),编辑器(红色)、调试(绿色)、实用工具(黄色),工具栏(紫色)。command+0: 展示/隐藏导航区域command+1 到command+n:选择不同的导航器command+option+J: 过滤导航结果command+shift+Y: 显示/隐藏调试区command+option+0: :显示/隐藏实用工具区command+option+1 到command+option+n: 切换实用工具区选项卡control+6:方法的跳转菜单control+1: 魔法菜单(打开试试)control+command+Up 和&control+command+Down: 对应文件导航control+command+E: 范围内重命名符号(注意:不支持属性)control+command+Left 和 control+command+Right: 查看历史文件control+command+J: 查看符号来源option+Selection: 垂直选择option修饰符: 在辅助编辑器执行快捷键command+shift+] 和command+shift[: 移动到下一个/上一个的标签command+option+] 和command+option+[: 将某行代码向上和向下移动command+R: 运行应用程序command+B: 构建应用程序control+.: 停止运行中的应用程序control+i: 格式化代码(高亮代码)Xcode的代码片段是另外一种加快编程的途径。我反复用代码片段为一小块代码分配一个代号。输入(非常短)代码的名称,我可以把相应的代码块添加到项目中。根据工作类型的代码,Xcode代码片段可以有效提高工作效率。看看这些GitHub链接,开始你自己的代码片段收集:使用Xcode的辅助编辑器辅助编辑器是Xcode中最有用的工具。最初几个月我都没有发现它,直到用这个神奇的按钮打开了我即将编辑的文件。它不是100%的准确,但是菜单系统的设计是超级直观的,所以你基本上总能找到相关的文件。辅助编辑器将文本编辑器分为两个窗格,并根据你在第一个窗格中正在编辑的文件明智地在第二个窗格中展示有用的功能。例如如果你在storyboard中,它将会展示与当前正在编辑的视图相关的视图控制器代码;如果你处于一个Objective-C实现文件中,辅助编辑器将会展示文件的头文件。你也可以调整辅助编辑器来展示基于普通过滤器的文件或者手动导航到某个文件。话说我看到一个类,并试图查看如何使用它。这是辅助编辑器很擅长的任务。辅助编辑默认选择实现文件,因为我们正处于头文件中,所以我调整过滤器以展示包括左侧文件在内的文件。我很快找到了该类的用法并思考如何使用它。过去我通常是在整个项目中进行搜索,但是辅助编辑器在这方面速度更快,并可以同时在一个屏幕中显示两个环境。。技巧:在Xcode中处理UI文件的一项常见操作是设置IBOutlets。你可以用很多方法来做到这一点,但是我最喜欢用辅助编辑器将视图向右拖拽到代码文件中。。快捷键:和:显示/隐藏标准编辑器和辅助编辑器as modifier.例如使用模糊的文件搜索,然后按下,选择一个文件将在辅助编辑器中打开它,而不是主编辑器。使用、编辑断点以及为其添加不同的ActionXcode的断点对有经验的使用者来说是个强大的功能。在开发者的职场生涯中,调试工作是困难的,并且花费的时间要比写代码更多。对于使用其他IDE的开发者来说,Xcode提供了一些可能被人忽略的强大的调试的工具。首先,打开异常/错误断点。每当抛出错误或异常时,调试器都要打一个断点。很多时候应用程序遇到错误或异常会导致程序的崩溃,并且我们会被令人厌恶的代码所纠缠。开启断点的时调试器将会在应用程序的逻辑栈上暂停,这对于诊断问题非常有用。。然后,你可以通过编辑断点来更高级地使用它。我做过大量的结对编程,发现编辑断点可以激发开发者的思维。许多人都知道他的功能但不实用,我很幸运在我的Xcode生涯早期有一个聪明的开发者教我关于编辑断点的使用。技巧:编辑断点添加一个操作。这些action可以是Debugger Command,也可以是Log Message。比如说,我想知道在应用程序的生命周期中何时加载这个视图。我可以在Xcode击中断点时播放声音且调试器不会中断应用程序(通过“Automatically continue after&evaluating actions”复选框),而不是添加一个会扰乱我工作流程的传统断点。现在我可以继续愉快地测试,并在加载视图控制器时听到欢快的哔哔声。这是一个快速给你展示如何设置它的示例。使用Version Editor和Show Related Items更好地审查代码遇到不合适的或者难易理解的代码时,我通常会先使用Blame模式。Blame模式可以查出原作者以及编写该代码的原因(如果作者写的话)。如果作者没有写明编写该代码的原因,我会跟他们联系并亲自问明原因。同样的,Compare模式(对比模式)可以精准指出此前上传的代码哪些地方发生了变化。对比模式可以提示我是否遗留了一些测试代码或者空的注释,然后修正和审核代码。对比模式在追踪bug方面也非常有用。如何才能准确地使用版本编辑器的Blame和Compare模式呢?比如我正在跟踪某个问题的原因,我发现不知何故将临时证书添加到了代码中,所以我使用Blame模式查找临时证书添加的时间添加的原因,结果告诉我去年为了修复某个崩溃问题添加了临时证书。现在我知道去年添加了临时证书,不过我认为这可能不是导致问题的原因。那么还有其他什么发生了改变吗?为了找到答案,我使用Compare模式找到了问题的源头,可以通过一个方案来解决该问题。另一个可以充分使用的功能是审核代码时使用的Xcode的Show Related Items功能,我称之为“魔法菜单”,虽然它非常有用,但在使用Xcode的第一年,我几乎没有发现它的存在。这个按钮隐藏的非常深,并且看起来也不是可点击的,但是它包含了Callers和Callees这样强大的功能,展示代码在什么地方以及被谁调用过。这个功能可帮助我弄清楚哪里会被改变以及如何改变一大块代码,而又不破坏别的地方。通过扩展为Xcode添加功能扩展可以为Xcode添加新的或者其本身缺失的功能。不过扩展系统不像其他IDE那样健壮,也不为大多人所知。虽然扩展有很多很酷的地方,但也依然存在问题。大部分IDE都有内置的扩展库,但Xcode甚至没有文档说明他们的扩展API。你可以通过以下比较有用的插件为Xcode添加新功能。:一个开源的Xcode包管理器,可以让你更便捷地发现、安装以及管理插件、模板和配色方案。只需要简单地点击或者勾选,不需要手工复制和粘贴。&:一个适用于Xcode 5以上版本的插件,通过添加模糊匹配来提高Xcode代码自动补全功能。虽然你可以通过Xcode的command+shift+O快捷键进行文件和符号名称的模糊搜索,但Xcode默认从首字母进行模糊匹配。而使用FuzzyAutocompletePlugin,开发者无需遵循从头匹配的原则,只要记得方法里某个关键字即可进行匹配,很好地提高了工作效率。:很多时候,为了快速开发,很多的技术文档都是能省则省,这个时候注释就变得异常重要,再配合Doxygen这种注释自动生成文档的,就完美了。但是每次都要手动输入规范化的注释,着实也麻烦,但有了VVDocumenter,只需要在要写文档的代码上面连打三个斜杠,就能自动提取参数等生成规范的Javadoc格式文档注释。&:允许你指定一个编码风格,然后格式化保存代码,无需为了匹配你的代码风格而不断调整代码。你可以检查保存的格式配置和任何扩展它们的代码。(现在只适用于Objective-C): Xcode自带一些默认的配色主题,但如果不够,可通过Alcatraz安装其他主题。:增大或减小Xcode编辑器的字体。:为Xcode增加一个清除全部缓存的按钮。这在调试工程时是很有用的。:根据项目中类之间的依赖关系生成有向图。:展示文本编辑器中UIColor或NSColor的预览效果。通过它可以创建或编辑可视化的颜色。:不用Xcode的文档查看器,而是用Dash应用检阅文档。:当在Objective-C中使用switch语句时,很容易忘记检查所有用例而产生bug。这个插件可以自动生成switch语句代码,并安全处理所有用例。功能包括:插入所有可能的switch cases;保留已经使用的条件,仅插入缺失的条件;当使用内置的Xcode片段时仅保留默认条件;适用于变量、属性以及方法参数等;适用于嵌套switch语句;快速稳定,且不会明显影响Xcode的性能。通过Interface Builder大幅度提高你的效率Xcode有一个叫做Interface Builder的用于搭建用户界面的可视化工具。它不要求使用Interface Builder来创建UI,但可以使调整UI这项的乏味任务变得更简单。Interface Builder的大部分操作都在Xcode的实用工具区,所以知道如何以及何时使用相关部件是很有用的,可使用快捷键command+option+0()来打开实用工具区,就能看到6个非标签性质的按钮,每一个都有不同的重要性,对于Xcode初学者来说找到自己需要的按钮会有点困惑。按照从左到右的顺序,这6个按钮分别是:文件检查器(File Inspector)、快速帮助(Quick Help)、识别检查器(Identity Inspector)、属性检查器(Attributes Inspector)、规格检查器(Size Inspector)和连接检查器(Connections Inspector)。文件检查器(File Inspector):这个特性非常很少使用。看个人爱好,你可以点击打开或关闭自动布局和配置本地化。快速帮助(Quick Help):这个特性很少使用,可链接到你所选中项目的相关文档。识别检查器(Identity Inspector):一个很有用的功能,身份检查器用于访问和设置自定义视图类。属性检查器(Attributes Inspector):我使用它最多。可以配置所选项目的属性,例如标签文本、背景颜色以及alpha值等。尺寸检查器(Size Inspector):另一个有用的功能,可协助你查看和编辑自动布局约束。连接检查器(Connections Inspector):此功能的使用频率取决于你IBOutlet的工作流程,可用来连接和查看IBOutlets。总结你无需使用以上列出的所有技能才能成为Xcode行家。每个人都有自己独特的Xcode使用技巧,也没有两个人所列的技巧完全一致,关键要弄清楚哪个快捷键和技巧最适合你的开发工作,希望以上内容可以帮你回顾下自己的Xcode使用经验,并找出其他方法让自己成为更有效率、更熟练的开发人员。推荐阅读:更多译者翻译文章,请查看:本文仅用于学习和交流目的,转载请注明文章译者、出处和本文链接。&感谢对本期活动的支持
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量10810点击量10492点击量9338点击量6591点击量5420点击量5217点击量5145点击量5039点击量4686
&2015 Chukong Technologies,Inc.
京公网安备89

我要回帖

更多关于 ios addattributes 的文章

 

随机推荐