本文目录
- 设计师怎样使用Xcode 5制作app原型
- 如何用xcode5开发ios9
- iOS Xcode6和Xcode5的区别
- xcode使用方法
- 安装xcode6用不用删除xcode5
- 如何解决Xcode5上传应用时找不到图标的问题
- Xcode6和Xcode5获取app名字及国际化的不同
- xcode5中调试时,CPU与Memory是代表什么
- XCODE5,IOS开发,创建动态按钮,随机出现,各按钮之间不能重叠
设计师怎样使用Xcode 5制作app原型
今天的这篇,不涉及任何代码编程,纯粹通过大量图片与少许说明来展示实践方式;作者还提供了该案例的完整项目文件,我们可以边参考边学习。我个人建议,可以先读一遍我们之前的“设计师应该了解的iOS应用开发基础知识”一文,对相关的一点点理论知识有所认知,然后再跟着今天这篇文章进行实践。那我就不多念叨了。
这里进入译文。过去几个月里,我每天都早上7点起床,然后持续工作到晚上7点,为的就是既能把我自己的应用Ripple搞出来,同时又能保住我在Carshare.hk的全职工作。这个月里,我整个人都扑在iOS的体验设计上了,我的挑战有两点:确保上面说的两个应用在年内发布,并且在这些项目中同时扮演设计师与前端开发的角色。
拥抱Xcode的Storyboard
在这期间,我遇到一名很棒的iOS开发工程师,他很认同Storyboard的使用。我曾经用Storyboard制作过简单的原型,但我的梦想始终是自己打造具有功能性的真正的iOS应用。在他的帮助下,我个人项目的开发工作变得相当简单:由他来负责那些更高级和复杂的功能与交互实现,而我则聚焦在布局、动效以及像素极精确的前端界面的实现上。幸运的是,苹果的官方文档绝对是世界级的,另外,时不时的到Stackoverflow中寻求解决方案也能让你感受到一个庞大而友好的设计开发社区随时可以帮到你。
我们是设计师
作为时常需要在交互、视觉和前端角色之间游走的设计师,我不能让自己的工作再增加任何复杂度了。如果我必须去学习Objective-C编程才能完成工作的话,我很快就会失去动力。本文所介绍的实践方法不涉及代码编写,而是聚焦于设计师所熟悉的领域,以及怎样通过Xcode的Storyboard将UI原型实现出来。
iOS 7与Xcode 5
在iOS7里,视觉设计扮演的角色相对以前来说弱了一些,设计师需要更加关注视觉风格背后的功能实现。伴随iOS7一同到来的是Xcode5,相比于以前的版本,它是一个更加友好的开发工具。Xcode5为我们带来了资源库(Assets Library),自动化设置(Automatic Configuration,使在实际设备上的测试工作更轻松),Open Quickly,SpriteKit,以及一个更加强大的Storyboard。
上手Xcode
本文的案例原型可以在这里下载。这是一个完整的Xcode项目文件,也正是我们需要通过学习来实现的东西,不妨先大致看下。
安装好Xcode之后,创建一个新项目(Create a new Xcode project):
在接下来的界面中选择Single-View Application,然后为项目起个名字:
Xcode5中,每个新项目里都会默认包含一个Storyboard文件:
以及资源库(Assets Library):
资源库中所需的东西都是设计师们所熟悉的:应用图标与加载图片。你可以直接从Finder当中把相关的图片拖拽放置到资源库里:
资源库,我的最爱
怎样更有效的导出和导入设计稿中的图形素材,这曾经是设计师与开发者在合作过程中所面对的最大问题之一。要么是开发者去学习使用Sketch或Photoshop,然后自己切图,要么就是与设计师就切图方式问题进行频繁沟通。对多数设计师来说,这是不得不做的事情,我们需要花费大量的时间来导出图形素材,并进行相关的文档标注工作。后来,又出现了可伸缩图形素材,你必须知道怎样去制作这些让人焦虑的东西;这东西真的太复杂了,以至于很多人会去写这方面的教程。好了,这些都是往事了;如今,Xcode5可以帮你创建那些可伸缩的图形素材了。
在Sketch中,导出两个规格的所有图形素材。Sketch会针对不同规格的图形文件自动进行命名:
然后将所有的图形素材导入到Xcode当中。Xcode会自动为它们进行匹配:
要处理可伸缩的图形,点击“Show Slicing”按钮:
然后点击“Start Slicing”,开始切片工作:
点击3个按钮当中的某一个,以设置切片方式;具体点击哪个,取决于你希望素材向哪个方向伸缩:
然后,Xcode就自动帮你完成其余的工作喽:
接下来你可以对其他所有按钮或气泡素材进行相同的处理。
我们的第一个界面
我们来创建第一个界面(如下面左图所示)。点击左侧导航栏中的Storyboard文件,从右侧的对象库里拖出一个Image View到中间的编辑区当中(如下面右图所示):
然后,在右侧的属性检查器(Attributes Inspector)面板中找到“Image”一项,通过它为该Image View设置图片内容。Xcode会在“Image”的列表中自动填充来自资源库的图形素材,选择那张你要设置成背景的图片就好:
再拖进来一个Image View,将它的图片设置为“bubble-white”。要调整尺寸,可以拖拽气泡四周的把手,你会看到图形在伸缩过程中的表现有多平滑:
接下来,以同样的方式,通过Image View来创建头像。如果你按住Alt键,会看到在Sketch当中的所熟悉的功能:
然后,我们为气泡填充文字内容。从右侧的对象库中拖出一个Label对象到我们的气泡当中。在属性检查器中将“Lines”设置为0,这样就可以输出无限行的文本了:
保持该Label对象的选中状态,在右侧尺寸检查器(Size Inspector)中通过具体数字来调整文本对象的宽度,这样更精确些:
长按Alt查看查看尺寸,我们做完美主义者:
至于字体,可以试试更符合iOS7纤细风格的Helvetica Neue Light:
创建信息输入栏
从右侧对象库中拖一个View出来到我们的界面中,调整高度并放置在底部。你可以把View视图理解为一个文件夹,它拥有自己的一套属性,你可以向里面放各种东西:
然后,从右侧对象库拖出一个Text Field对象,也就是文本输入框控件,放在刚刚的View当中。可以在右侧的属性检查器中看下Text Field对象包含的若干属性,如果你会写CSS,那么对这些概念大概会比较熟悉一些。注意“Border Style”,要确保我们的输入框不带边框:
还差一个按钮。从对象库中拖一个Button控件放到Text Field的右侧,在属性检查器中找到“Image”并设置为“icon-camera”。注意,我们还可以在属性检查器中为按钮的不同状态设置不同的样式:
制作导航栏
这里有点小技巧。在界面编辑区左侧的,在Help菜单中搜索“Embed”,然后选择“Embed in Navigation Controller”,这样我们就将之前的界面嵌入到一个导航体系当中了,你会看到我们的界面左侧出现了一个新的视图控制器Navigation Controller:
在编辑区左侧的文档大纲中找到“Navigation Bar”,然后可以在右侧面板中找到很多风格样式的参数设置:
导航栏中需要标题?选择我们界面所在的试图控制器当中的“Navigation Item”,在右侧属性检查器中设置Title即可:
导航栏中同样可以放置按钮。在右侧的对象库中,拉到最下面,找到“Bar Button Item”,拖一个出来到导航栏右侧。记得编辑一下属性面板中的Tint颜色,在Xcode中你可以自由的为按钮图片着色:
圆角样式
从前,在使用CSS的时候,通过图片来制作圆角矩形背景可不是件让人开心的事。在Xcode5当中,你可以像CSS3那样直接程序化的设置圆角样式。
制作“附近的聊天室”列表界面时,我们使用View视图来创建列表条目,并通过View自身的属性来实现圆角样式。选中View视图,在右侧属性检查器中勾选“Clip Subviews”。这相当于CSS里的“overflow:hidden”:
保持View视图的选中状态,然后点击属性检查器高亮图标左侧的“Identify Inspector”图标。在“User Defined Runtime Attributes”中添加一个“layer.cornerRadius”属性,将其类型(Type)设置为“Number”,值(Value)为“5”:
圆角样式的效果不会在Storyboard中立刻体现出来;当你运行项目时(Command+R),会在实际界面中看到圆角已经被创建出来了:
将界面连接起来
我们要实现这样的导航结构:在“附近的聊天室”列表界面中点击一个一个条目,进入聊天对话界面,也就是我们前面做的第一个界面。(建议打开下载的案例文件了解一下要实现的路径结构 - 译者C7210注)
从对象库中拖一个按钮控件(不是Bar Button)出来,放到聊天室条目上,清空按钮文字,调整尺寸,使其能准确覆盖下面的条目:
按住Ctrl键,从刚刚的透明按钮区域开始向另外一个界面进行拖拽,拖拽的过程中会出现一条蓝线,当蓝线右端进入目标界面之后,停止拖拽,从弹出的菜单中选择“push”。这样,在模拟运行的时候,就可以通过点击列表条目进入对话界面了:
1像素的线条
Xcode以pt为单位,你没法把一个View视图设置为0.5pt或是1px,所以要在定制化的控件当中使用1像素的细线的话,还是需要首先创建图片素材:
制作标签栏
iOS的标签栏与工具栏的定制化程度还是很高的,你可以改变配色、文字和图标。
在Storyboard编辑区或其左侧的文档大纲中选择某个View Controller,在Help菜单中搜索“Embed”,这次选择“Embed In Tab Bar Controller”:
接下来便可以在右侧的检查器面板中对Tab Bar或Tool Bar进行设置:
有时,你希望界面在导航栏或标签栏的导航体系中,但又不希望导航栏或标签栏显示出来,那么可以在属性检查器中将“Bottom Bar”设置为“None”,并选中“Hide Bottom Bar on Push”:
滚屏
iOS中平滑的滚屏动效人见人爱。要实现这种效果,你通常需要使用Table View视图对象作为内容的容器。大致的结构可以是:Table View - View - 你的自定义对象:
需要注意,Table View和View默认都是白色的背景,你要根据需要在属性检查器中将它们设置为“Clear Color”:
另外,也可以通过使用Table View作为容器让界面当中的一部分成为可滚动的内容:
如何用xcode5开发ios9
下载安装好xcode5后,我们就可以开始ios开发之旅了。首先打开xcode。选择新建一个xcode项目。
新建一个单窗体的程序。
只需要简单的设置一下项目的名称,开发程序使用的设备,可以看到有ipad iphone等。
创建好项目后,可以看到xcode给我们自动生成了目录结构和简单的配置文件。
先不做什么修改,来运行一下这个项目程序。点击xcode左上角的运行按钮。可以看到现在只是一个空白的程序,编译运行后自动会调出ios模拟器。现在在程序界面当中加一个label标签来显示helloworld。选择项目目录下面Main.stroyboard,鼠标单击后,可以看到屏幕中间出现了一个空白的界面,这就是运行程序时的主界面。现在从xcode右侧的工具栏中拖一个label标签到界面。现在就可以修改label的文字,比如改称hello world!在点击运行,看看运行后的效果吧,
iOS Xcode6和Xcode5的区别
我是一名iOS在职工程师,我现在用的版本是“Xcode6.0.1”+“Xcde5.1.1”,有图有真相! 你可能会问为什么会装两个Xcode版本,那么我告诉你有的公司甚至装3个!还有一个Xcode4,那是因为Xcode6已经不支持iOS6的模拟器了,而Xcode5有,同样Xcode4有iOS...
xcode使用方法
xcode使用方法:(以xcode5为例)
1,下载安装好xcode5后,就可以开始ios开发之旅了。首先打开xcode。选择新建一个xcode项目。
2,新建一个单窗体的程序。按图所示。
3,只需要简单的设置一下项目的名称,开发程序使用的设备,可以看到有ipad,iphone等。
4,创建好项目后,可以看到xcode自动生成了目录结构和简单的配置文件。
5,先不做什么修改,来运行一下这个项目程序。点击xcode左上角的运行按钮。
6,可以看到现在只是一个空白的程序,编译运行后自动会调出ios模拟器。
7,现在,在程序界面当中加一个label标签来显示helloworld。选择项目目录下面的Main.stroyboard,鼠标单击后,可以看到屏幕中间出现了一个空白的界面,这就是运行程序时的主界面。
8,现在,从xcode右侧的工具栏中拖一个label标签到界面中央。
9,好了,现在就可以修改label的文字,比如改称:hello world。
10,好了,再点击运行,看看运行后的效果吧。
安装xcode6用不用删除xcode5
不需要删除Xcode5,两个是并存的。。直接拖进去就可以了。。而且应用只要不重名就可以弄多个,Xcode6目前的名称后面都有beta后缀,所以不会覆盖,正式版出了之后才回去掉后缀,这个时候如果你还想保留Xcode5只要把原来的Xcode改名,比如Xcode5.app就可以了。。
如何解决Xcode5上传应用时找不到图标的问题
这个问题一般会出现在就应用迭代升级支持新的iOS7,将工程迁移用Xcode5编辑的情况。Xcode5中对图标和加载图片采用了新的管理模式,通过AssetCatalog来统一管理。所以解决方案请依据具体方案而定:第一:如果应用只支持iOS5或者更新,那么直接按Xcode5的建议,通过AssetCatalog来管理即可。如果Xcode5没有自动提示,那么可以按下图指示手动操作“UseAssetCatalog”。第二:如果应用需要支持到5.0以下,那么然后在按照一下步骤操作。1.准备8张图标文件:其中两张用于支持iOS6或者更早(57x57和114x114),两张用于支持iOS7(60x60和120x120),两张用于支持iOS6或者更早的spotlightsearch/settings(29x29和58x58),以及两张用于支持spotlight(40x40and80x80).所有图标都必须为PNG格式.名称任意,但高分辨率的图标必须与低分辨率的图标名称相同,并已@2x结尾。例如icon.webp和icon@2x.webp.2.在工程的plist文件中,编辑CFBundleIconFiles键值(它是一个Array)以包含以上所有图标的名称.只需包含低分辨率图标的名称即可,不含扩展名(.webp)。3.确认工程中没有包含AssetCatalog文件夹。4.做完以上三步,当打开工程的“General”选项时,在appicons中Xcode已列出所有的图标文件。5.如果应用需要支持iOS3.1或者更早,还需要4个图标.这四个图标的尺寸和名字分别是:Icon.webp(57x57),Icon@2x.webp(114x114),Icon-Small.webp(29x29),Icon-Small@2x.webp(58x58).这四个图标的名字是固定的不得更改,如果前面就已经这样命名,那么不再需要额外的图标。
Xcode6和Xcode5获取app名字及国际化的不同
1.在Xcode5下,获取程序名字(app name)的方法为:
NSString *proName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@“CFBundleDisplayName“];
NSLog(@“dicName ==== %@“,[[NSBundle mainBundle] infoDictionary]);
打印之后可以看到:
CFBundleDisplayName = TestOfButton;
CFBundleName = TestOfButton;
2.在Xcode6下,获取程序名字(app name)的方法为:
NSString *proName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@“CFBundleName“];NSLog(@“dicName ==== %@“,[[NSBundle mainBundle] infoDictionary]);
打印之后可以看到:
CFBundleName = TestOfButton;
没有了这一键值:CFBundleDisplayName = TestOfButton;
而 Xcode6 程序的CFBundleDisplayName可以在info.plist里添加这个key。
3.说到 Info.plist,在Xcode6中,没有 info.string 文件,只有 Info.plist 文件,所以,如果做国际化可以新建一个 Info.string,来弥补Xcode6中 Info.string 的缺失。而且如果要在这里改app name 则,CFBundleDisplayName 要加上双引号。然后,剩余的国际化进行的操作和网上介绍的方法雷同了。如有改动,我会陆续更新。
xcode5中调试时,CPU与Memory是代表什么
内存(Memory)是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。 内存是由内存芯片、电路板、金手指等部分组成的。
所以 内存就是 Memory 。
XCODE5,IOS开发,创建动态按钮,随机出现,各按钮之间不能重叠
我只说一下思路:
这里按钮的位置随机出现这个需求,我们知道控件的位置是一个CGPoint. 横坐标的点x不会超过320,所以你可以使用随机数random%320 来得到320之间的随机出来的数,同样的纵坐标点y不会超过480。这样就可以随机取出了按钮的位置。
还有一个需求是随机出来的5个按钮不能重叠。对于这个需求,可以使用函数CGRectContainPoint来判断,判断新生成出来的点是否是在已生成的控件范围内。
2.按钮的要有边框和背景色。你需要引入一个《QuartzCore.framework》来设置
button.layer.borderWidth=1;
button.layer.borderColor=[UIColor grayColor];
button.tinColor=[UIColor blueColor];
3.使用代码生成的按钮,你标记某个按钮的时候,可以使用tag属性
button1.tag=1;
button2.tag=2;
这样你可以根据这个tag值找到你要操作的button
UIButton *button1=(UIButton *)[self.view viewWithTag:1];