斯坦福IOS开发第五课(第一部分)
转载请注明出处
http://blog.csdn.net/pony_maggie/article/details/27706991
作者:小马
因为第五课的内容比較多。分两部分来写。
一 屏幕旋转基本操作
控制当前的view是否支持旋转,假设是,是支持哪些方向的,有四个方向,各自是home键在下。上。左右.
在当前的viewcontroller里,实现shouldAutorotateToInterfaceOrientation方法。告诉系统你支持的旋转方向,例如以下:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES; //四个方向都支持
//return UIInterfaceOrientationIsPortrait(interfaceOrientation); //仅仅支持直立 //return (interfaceOrientation==UIInterfaceOrientationLandscapeLeft) //横向Home键在左 //return (interfaceOrientation== UIInterfaceOrientationLandscapeRight) //横向Home键在右 //return (interfaceOrientation== UIInterfaceOrientationPortrait) //竖向正常 //return (interfaceOrientation==UIInterfaceOrientationLandscapeLeft) //竖向Home键在上 }
假设没有实现这种方法,默认是不支持旋转,仅仅有portrait。
只是IOS6以后,这种方法被列为DEPRECATED 方法了,不能再用了. 用两个新的方法取代.
(注意,为了向后兼容iOS 4 and 5,还是须要在你的app里保留shouldAutorotateToInterfaceOrientation)
supportedInterfaceOrientations 和shouldAutorotate
假设是不能旋转。仅仅须要
- (BOOL)shouldAutorotate
{
return NO;
}
比方要支持横向
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAllButUpsideDown;
} - (BOOL)shouldAutorotate
{
return YES;
}
同一时候,还须要在Info.plist文件中面加入程序支持的方向。假设没有实现上述两个方法,iphone默认是仅支持横向旋转。
二Struts and springs
这是一个老的布局模型。xcode4.5之后默认都是用Autolayout,所以不会看到以下这种Struts and springs,例如以下图:
假设想用这个,在project里把useAutolayout的box勾选掉。Struts and springs能够设置当一个视图的父视图大小改变时。其自身须要做出什么改变。
比方从纵向变成横向时,可能有必要对一些控件做一些拉伸等。注意看上图左别边部分。分为两部分。外层是一些像大写字母I一样的东西。这些控制当父视图改变时,子视图应该怎么”靠”,里层的像箭头一样的控制当父视图改变时,子视图应该怎么“拉伸”。当然Struts
and springs并非万能的。它仅仅能处理一些简单的情况。有一些场景还是须要用代码来完毕的。设想一下假设一个计算器的应用,从纵向变成横向。可不是简单拉伸一些button即可的,这样的情况就要写代码来做一些布局了。
因为篇幅有限。这里就不具体举样例了。推荐一篇关于自己主动布局比較好的文章:
http://www.cocoachina.com/applenews/devnews/2013/1203/7462.html
三 协议
这节课有10分钟左右的时间讲了一下协议。由于我之前的文章对这个已经有描写叙述,这里就不做过多介绍了。
四 手势识别
手势识别的核心是UIGestureRecognizer类。通过两个步骤就能够加入一个手势识别的功能。一是在UIView里加入gesture,二是实现一个处理函数,这些在下一部分的演示样例代码中都会看得到。
须要注意的是。第一步一般是在controller完毕,第二个是在UIView里做。这样的思想源于对UIView的复用性考虑,也就是我们要考虑一个UIView会被多个controller使用,可能不用的controller会有不同的手势识别需求。
这里给了一个加入手势识别的演示样例,这段代码当然是最好放在controller实现部分。这里面的pan函数就是上面提到的处理函数。也就是当某个手势触发时要运行的动作。
上面给出了UIGestureRecognizer(或者其子类)提供的方法和属性,这些方法和属性协助我们实现处理函数,由于处理函数有一个默认的參数就是UIGestureRecognizer(或者其子类)的实际。比方这种代码:
//手势识别,缩放功能
- (void)pinch:(UIPinchGestureRecognizer *)gesture
{
if ((gesture.state == UIGestureRecognizerStateChanged) ||
(gesture.state == UIGestureRecognizerStateEnded))
{
/*
以下两行代码事实上和这一行效果是一样的,所以注意理解第二行置1的作用.能够查一下gesture.scale是怎么取值的
self.scale = gesture.scale;
*/
self.scale *= gesture.scale;
NSLog(@"scale:%f", gesture.scale);
gesture.scale = 1;
}
}
然后我们看到这里给出三个详细的UIGestureRecognizer的子类,分别用于处理缩放,翻转以及滑动的手势。
第二部分我们会讲到代码演示样例。
斯坦福IOS开发第五课(第一部分)的更多相关文章
- 斯坦福IOS开发第五课(第二部分)
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27845257 作者:小马 五 代码演示样例 上面讲到的知识点在这个演示样例都有涉及 ...
- 解析iOS开发中的FirstResponder第一响应对象
1. UIResonder 对于C#里所有的控件(例如TextBox),都继承于Control类.而Control类的继承关系如下: 代码如下: System.Object System.Marsha ...
- iOS开发 ReactiveCocoa入门教程 第一部分
作为一个iOS开发者,你写的每一行代码几乎都是在响应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocation).但是这些事件都用不同的方式来处理 ...
- 从零开始学ios开发(五):IOS控件(2),Slider
下面继续学习ios的其他控件,这次会使用到的控件有Slider,当然还有一些之前已经使用过的控件Label. 这次我们不新建一个project了,当然如果你愿意重新创建一个新的项目也完全可以,我们还是 ...
- 【ios开发学习 - 第二课】iOS项目文件夹结构
文件夹结构 AppDelegate Models Macro General Helpers Vendors Sections Resources 一个合理的文件夹结构首先应该是清晰的.让人一眼看 ...
- IOS开发之进阶篇第一章 - 姿势识别器UIPanGestureRecognizer
今天讲一下姿势识别器,UIGestureRecognizer这个是抽象类 1.拍击UITapGestureRecognizer (任意次数的拍击) 2.向里或向外捏UIPinchGestureReco ...
- [IOS开发进阶与实战]第一天:CoreData的运行机制
1.数据模型NSManagedObjectModel的建立 1.- (NSManagedObjectModel *)managedObjectModel { if (_managedObjectMod ...
- 从零开始学ios开发(三):第一个有交互的app
感谢大家的关注,也给我一份动力,让我继续前进.有了自己的家庭有了孩子,过着上有老下有小的生活,能够挤出点时间学习真的很难,每天弄好孩子睡觉已经是晚上10点左右了,然后再弄自己的事情,一转眼很快就到12 ...
- 斯坦福大学 iOS 开发公开课总结
斯坦福大学 iOS 开发公开课总结 前言 iPhone 开发相关的教程中最有名的,当数斯坦福大学发布的 "iPhone 开发公开课 " 了.此公开课在以前叫做<iPho ...
随机推荐
- [置顶] access函数-linux
表头文件 #include<unistd.h> 定义函数 int access(const char * pathname, int mode); 函数说明 检查是否可以读/写某一已存在的 ...
- Unix/Linux环境C编程入门教程(23) 字符数字那些事儿
1.atoi 包含头文件: #include <stdlib.h> 函数原型: int atoi( const char *str ); 功能:将字符串str转换成一个整数并返回结果.参数 ...
- thrift TNonblockingServer 使用
下载 0.9.1 版本 (0.9.2需要 2.5的bison,而 RHEL6上自带bison是2.4) TNonblockingServer 时必须使用 TFramedTransport ,不能使 ...
- cocos2dx lua 学习笔记(一)
macosx 安装 lua curl -R -O http://www.lua.org/ftp/lua-5.1.4.tar.gz tar zxf lua-5.1.4.tar.gz cd lua-5.1 ...
- OAuth2.0开发指南
OAuth2.0开发指南 1.认证与登录 来往开放平台支持3种不同的OAuth 2.0验证与授权流程: 服务端流程(协议中Authorization Code Flow): 此流程适用于在Web服务端 ...
- 求职(2015南京站获得百度、美的集团、趋势科技、华为offer)
版权所有所有:没有马缰绳chhuach(CSDN博客源).转载请注明出处. 禁止www.haogongju.net转载. 特此声明 一.开篇: 9月底,找工作接近尾声,笔者主要经历了2015年南京站百 ...
- Jquery揭秘系列:谈谈bind,one,live,delegate,on事件及实现
在Jquery里面,我们用的最多的就是事件绑定了,事件绑定有多个函数.例如:bind,one,live,delegate,on等等. on() jQuery事件绑定.on()简要概述及应用 看源码发现 ...
- Android自定义工具类获取按钮并绑定事件(利用暴力反射和注解)
Android中为按钮绑定事件的有几种常见方式,你可以在布局文件中为按钮设置id,然后在MainActivity中通过findViewById方法获取按钮对象实例,再通过setOnClickListe ...
- HTML——JAVASCRIPT——光棒效果
光棒效果:建立一个表格,鼠标放到哪一行,哪一行的颜色就改变,鼠标离开那一行,那一行的颜色就恢复到原来的颜色 <!DOCTYPE html PUBLIC "-//W3C//DTD XHT ...
- HDU 3030 - Increasing Speed Limits
Problem Description You were driving along a highway when you got caught by the road police for spee ...