ios开发系列-界面

本章我们通过设计一个简单的登录界面来讲解一下在ios中如何设计界面。打开上章创建的项目后,首先我们要导入几个需要使用的图片。导入方式其实很简单。选中assets.xcassets。然后将使用的图片拖入即可。这里说明一下的是图片的名称最好带个页面前缀什么的,因为虽然可以在assets.xcassets中虽然可以创建文件夹,但最终读取图片的时候是没有路径的,也就是说如果你在不同文件夹下有同名的图片文件的话会出问题。说到图片文件。这里推荐一个找图片资源的网站http://www.easyicon.net。这个图片网站比较贴心的有两点。1:是会讲你的中文搜索关键字自动转成英文。2:是会为每张图片都提供多种像素格式。一般登录页包含这几个元素:系统logo,用户名输入框,密码输入框,以及登陆按钮。所以我们先找一个酷炫一点的logo.我图省事,就拿weixin的logo来用用吧。补充说一句,由于xcode编译的时候会对png文件做压缩优化。所以尽量选择png图片。iphone的屏幕宽度大约是320px左右,所以我选择的logo的尺寸是128*128.下载改名拖入项目后如下图.你会发现多出了一个2x,3x。这是干什么用的呢?这就涉及到苹果的设计思路了,他的目标是希望一套代码匹配所有设备。所以1x就是用于普通iphone,2x用于plus,3x用于ipad.可惜实际情况,用过微信ipad版的都知道了。。。。。。。。

闲话少叙,资源文件准备好以后我们就开始正式设计界面了,选中main.storyboard文件。界面如下图。里面viewcontrol.control你可以理解为就是我们的aspx文件,是我们界面的容器。里面有一个view.可以理解相当于div.左侧为所有control的列表,会显示他的层级结构,包含了哪些东西。中间就是我们编辑app页面的图像化界面了。右侧是你选中的controller或者控件的属性设置,右下角为可以使用的控件

首先我们拖入一个imageview来加载logo.你可以通过底部控件区底部的搜索栏来快速定位。然后设置其image属性。这里说明一下,如果你忘记了图片的名称。可以点击右下角功能区的第4项预览,如下图

然后再拖入两个textField.其中一个设置其placeholder(就是输入框中的输入提示)为用户名。另一个设置其placeholder为密码。并钩上Secure Text Entry设置,保证输入密码不可见。如下图

最后再拖入一个Button,设置其Title属性为登录。这样我们这个界面的所有元素都已经准备好了。接下来就是布局。在xcode中默认的布局方式是需要你提供4个值,即你的控件左上角所在点的x,y坐标和控件本身的宽和高。如下图

这在早期是可以满足开发需要的。但由于现在iphone的屏幕的尺寸有多种。直接写死明显会出问题。当然你也可以在代码中动态计算。但明显不太直观,调试起来也不方便。好在官方推出了AutoLayout,即自动布局。主要思路是两种。一种是指定该控件距离上左右相邻元素的相对距离和高度,然后让宽度随屏幕自适应,还有一种就是指定控件的宽高以及上相邻元素的相邻像素的相对距离,然后设置控件水平方向自动居中。这两种方式听起来是不是很熟悉?这其实也就是网页中处理屏幕不同分辨率的做法,原理说清楚了,就让我们开始具体操作吧。

首先选中我们的imageview.由于图片的长宽比是固定的,所以我们不可能让图片宽度自适应,否则图片会变形。所以我们采用第二种方式,让图片固定长宽然后居中。这这里顺便说下,iphone系列手机的屏幕的可见宽度大于等于320px.如下图。我们选中imageview后点击中部下方的第三个按钮。设置imageview距离上方为8px(注意要先选中对应的红线).宽度为240px.高度为120px.然后点击Add 3 constraints(即添加我们设置的3个约束)。

然后选择底部第2个按钮。勾选Horizontally  in container(水平居中)

然后选中用户名输入框。我们采用第一种方式,如下图  

接下来我们以类似的方式设置密码和登录按钮。做完以后你会发现。左边列表多了一个黄色的箭头,如图。

点击一下。他会提示你的几个控件的约束和你实际显示的效果不一致,没关系,一个个点击过去选择UpdateFrames即可

刷新后界面效果如下图

接下来,我们来看看运行效果吧。调试有两种方式,一种是使用模拟器,一种是使用真机调试。如果有条件的话还是尽量使用真机。还是先讲如何使用模拟器吧。如下图,先选择模拟器的型号,然后点击运行即可。

运行效果下下图

另外说一下,模拟器默认的宽度比较丑,不像手机效果,建议调整下比例。调整方式如下图。选中模拟器,然后点击window,设置对应比例

关于真机调试,以前由于需要开发者证书还是比较麻烦的,xcode7版本后简化了很多,具体方式见这个教程 http://www.skyfox.org/ios-xcode7-debug-device.html。好本章就讲到这里。

时间: 2024-10-14 13:34:27

ios开发系列-界面的相关文章

iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

iOS开发系列--音频播放.录音.视频播放.拍照.视频录制 转载:http://www.cnblogs.com/kenshincui/p/4186022.html#avFoundationCamera --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操作都提供了多套API.在今天的文章中将会对这些内容进行一一介绍: 音频 音

iOS开发系列--通知与消息机制

概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会补充通知中心的内容避免初学者对两种概念的混淆. 本地通知 推送通

iOS开发系列--通知与消息机制--转

来自:http://www.cocoachina.com/ios/20150318/11364.html 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何

IOS开发系列--无限循环的图片浏览器

--UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件都介绍一遍确实没有必要,所谓授人以鱼不如授人以渔,这里会尽可能让大家明白其中的原理,找一些典型的控件进行说明,这样一来大家就可以触类旁通.今天我们主要来看一下UIScrollView的内容: UIView UIScrollView 实战--图片浏览器 UIView 在熟悉UIScrollView之前

iOS开发系列--网络开发

iOS开发系列--网络开发 2014-10-22 08:34 by KenshinCui, 50097 阅读, 53 评论, 收藏,  编辑 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力的.今天就会给大家介绍这部分内容: Web请求和响应 使用代理方法 简化请求方法 图片缓存 扩展--文件分段下载 扩展--文件上传 NSURLSession

IOS开发系列—Objective-C之Foundation框架

概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架Foundation,今天的主要内容有: Foundation概述 常用结构体 日期 字符串 数组 字典 装箱和拆箱 反射 拷贝 文件操作 归档 Foundation概述 为什么前面说的内

iOS开发系列--通知与消息机制(转)

概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会补充通知中心的内容避免初学者对两种概念的混淆. 本地通知 推送通

iOS开发系列--App扩展开发

概述 从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和应用之间的交互.它的出现让自定义键盘.系统分享集成等这些依靠系统服务的开发变成了可能.WWDC 2016上众多更新也都是围绕扩展这一主题来进行了的,例如开发的Siri.iMessage Apps其实都是依靠扩展来工作的.在最新的Xcode 8 beta中也增加了众多的Extension 模板帮助开发者更快的实现不同类型的扩展.因此今天有必要介绍一下扩展相关的开发内容. 扩展的生命周期 iOS对于扩展的支持已经

iOS开发系列--IOS程序开发概览ios基础

iOS开发系列--IOS程序开发概览 2014-08-04 19:42 by KenshinCui, 72273 阅读, 81 评论, 收藏,  编辑 概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的知识是你日后开发IOS的基础,没有那些知识你开发IOS会很痛苦,现在很多开发人员做开发都是一知半解,程序质量确实令人担忧,所以还是希望大家能够熟练掌

iOS开发系列--网络开发网络联网程序

概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力的.今天就会给大家介绍这部分内容: Web请求和响应 使用代理方法 简化请求方法 图片缓存 扩展--文件分段下载 扩展--文件上传 NSURLSession 数据请求 文件上传 文件下载 会话 UIWebView 浏览器实现 UIWebView与页面交互 网络状态 目 录 Web请求和响应 使用代理