- 浏览: 13756869 次
- 性别:
- 来自: 洛杉矶
文章分类
- 全部博客 (1994)
- Php / Pear / Mysql / Node.js (378)
- Javascript /Jquery / Bootstrap / Web (435)
- Phone / IOS / Objective-C / Swift (137)
- Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux (335)
- Perl / Koha / Ruby / Markdown (8)
- Java / Jsp (12)
- Python 2 / Wxpython (25)
- Codeigniter / CakePHP (32)
- Div / Css / XML / HTML5 (179)
- WP / Joomla! / Magento / Shopify / Drupal / Moodle / Zimbra (275)
- Apache / VPN / Software (31)
- AS3.0/2.0 / Flex / Flash (45)
- Smarty (6)
- SEO (24)
- Google / Facebook / Pinterest / SNS (80)
- Tools (22)
最新评论
-
1455975567:
xuezhongyu01 写道wocan23 写道我想问下那个 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
xuezhongyu01:
wocan23 写道我想问下那个111.1是怎么得来的我也看不 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
18335864773:
试试 pageoffice 在线打开 PDF 文件吧. pag ...
jquery在线预览PDF文件,打开PDF文件 -
青春依旧:
opacity: 0.5; 个人喜欢这种方式!关于其他css特 ...
css透明度的设置 (兼容所有浏览器) -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
搞定网页打印自动分页问题
iPhone或iPad可以支持4种朝向
UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
究竟支持哪几个朝向,由view controller的shouldAutorotateToInterfaceOrientation函数来指定,每当设备的朝向发生变化时,这个方法都会被调用。
对于iPhone程序,应该防止用户在通话时拿倒电话,不支持UIInterfaceOrientationPortraitUpsideDown
因此函数实现为:
- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
对于iPad,应该支持所有的朝向,因此函数实现为
- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {
return true;
}
实现对Rotation的支持有三种方法:
1. 设置UI元素的Autosize Attribute,类似于.NET form的dock
2. 重新构造UI元素大小和位置
3. 不同的朝向使用不同的view
使用Autosize Attribute
Inner box中的红色箭头和UI元素的size有关,如果横向的红色的箭头成为实线,则窗口尺寸变化时UI元素的宽度也会变化,如果横向红色箭头为虚线,则窗口宽度变化时UI元素的宽度保持不变。垂直方向同理。
Inner box周围的短线变成实线时,表明UI元素和它所在的view的边缘的距离保持不变。
下图中的UI对象的高度将会随着view的高度而变化,同时UI元素相对于View的上下边距不变
- (void)willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation)
interfaceOrientation duration:(NSTimeInterval)duration {
if (interfaceOrientation == UIInterfaceOrientationPortrait
|| interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
button1.frame = CGRectMake(20, 20, 125, 125);
button2.frame = CGRectMake(175, 20, 125, 125);
button3.frame = CGRectMake(20, 168, 125, 125);
button4.frame = CGRectMake(175, 168, 125, 125);
button5.frame = CGRectMake(20, 315, 125, 125);
button6.frame = CGRectMake(175, 315, 125, 125);
}
else
{
button1.frame = CGRectMake(20, 20, 125, 125);
button2.frame = CGRectMake(20, 155, 125, 125);
button3.frame = CGRectMake(177, 20, 125, 125);
button4.frame = CGRectMake(177, 155, 125, 125);
button5.frame = CGRectMake(328, 20, 125, 125);
button6.frame = CGRectMake(328, 155, 125, 125);
}
}
切换View
为了支持两个View,需要在View controll中生成两套outlet
@interface SwapViewController : UIViewController {
UIView *landscape;
UIView *portrait;
// Foo
UIButton *landscapeFooButton;
UIButton *portraitFooButton;
// Bar
UIButton *landscapeBarButton;
UIButton *portraitBarButton;
}
在Interface builder中删除Xcode自动生成的view,从library中拖两个view 到main window上。分别命名为Portrait和Landscape.
选中File’s Owner,Control-drag 到Portrait和Landscape,连接outlet
动态加载view
#define degreesToRadians(x) (M_PI * (x) / 180.0)
- (void)willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation)
interfaceOrientation duration:(NSTimeInterval)duration {
if (interfaceOrientation == UIInterfaceOrientationPortrait) {
self.view = self.portrait;
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(0));#define degreesToRadians(x) (M_PI * (x) / 180.0)
self.view.bounds = CGRectMake(0.0, 0.0, 320.0, 460.0);
}
else if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
self.view = self.landscape;
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(-90));
self.view.bounds = CGRectMake(0.0, 0.0, 480.0, 300.0);
}
else if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
self.view = self.portrait;
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(180));
self.view.bounds = CGRectMake(0.0, 0.0, 320.0, 460.0);
}
else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
self.view = self.landscape;
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
self.view.bounds = CGRectMake(0.0, 0.0, 480.0, 300.0);
}
}
发表评论
-
手机firebug查看网页代码 How to View Website Source Codes on iPad / iPhone
2016-04-26 02:41 1175You’re using your iPad to br ... -
Android模拟器genymotion的安装和使用
2016-03-18 01:16 2536Genymotion概述 Genymotion是一套完整的 ... -
编码之道:取个好名字很重要
2015-10-14 05:19 1181代码就是程序员的孩子,给“孩子”取个好听的名字很重 ... -
Genymotion - 强大好用高性能的 Android 模拟器 (在电脑流畅运行APK安卓软件游戏的利器)
2015-06-05 13:34 7402随着 Android 系统的应用和游戏越来越丰富,甚至有 ... -
收集几个移动平台浏览器的User-Agent
2014-07-23 02:33 3037List of all Mobile Browsers ... -
常用浏览器修改User-Agent的方法
2014-06-28 02:58 10998之前有介绍收集的几个移动平台浏览器的User-Agent,以 ... -
更简洁的方式修改Chrome的User Agent,轻松体验移动版网络
2014-06-28 02:53 6957国庆节在家宅着,使用3g上网卡上网,和在公司上网不一样的是 ... -
3个检测浏览器User-Agent信息的网站
2014-06-28 02:52 2571刚刚在收集各个移动平台浏览器的User-Agent(参见这 ... -
根据移动设备屏幕像素密度,给予不同分辨率的图片
2014-06-26 00:52 2982在出现iphone4之前的相当长的时间内,网站开发人员 ... -
视网膜New iPad与普通分辨率iPad页面的兼容处理
2014-06-26 00:44 1355一、这是篇经验分享 ... -
iOS8开发-Swift编程
2014-06-25 00:45 1924课时列表 章节1:第一个Swift应用 ... -
Swift中文教程(二十三) 高级运算符
2014-06-25 00:43 833除了基本操作符中所讲的运算符,Swift还有许多复杂的高级 ... -
Swift中文教程(二十二) 泛型
2014-06-25 00:35 1083泛型代码可以让你写出根据自我需求定义、适用于任何类型的,灵 ... -
Swift中文教程(二十一) 协议
2014-06-24 05:25 1467Protocol(协议)用于统一方法和属性的名称,而不实现任 ... -
Swift中文教程(二十) 扩展
2014-06-24 00:47 742扩展就是向一个已有的类、结构体或枚举类型添加新功能(fun ... -
Swift中文教程(十九) 类型嵌套
2014-06-24 00:44 936枚举类型常被用于实现特定类或结构体的功能。也能够在有多种变量 ... -
Swift中文教程(十八) 类型检查
2014-06-24 00:41 786类型检查是一种检查类实例的方式,并且或者也是让实例作为它的 ... -
Swift中文教程(十七) 可选链
2014-06-17 05:11 910可选链(Optional Chaining)是一种可以请求 ... -
Swift中文教程(十六) 自动引用计数
2014-06-17 05:05 1298Swift使用自动引用计数(ARC)来管理应用程序的内存使 ... -
Swift中文教程(十五) 析构
2014-06-17 04:57 1044在一个类的实例被释放之前,析构函数会被调用。用关键字dei ...
相关推荐
iPhone开发中的动画类库提供了丰富的功能,使得开发者能够创建出各种动态效果,如旋转、翻滚和渐变。本资源是一个专注于iPhone开发的动画类库,包含了源代码,可以直接导入到你的iOS项目中使用,极大地简化了动画...
在iOS开发中,经常需要对图片进行裁剪或处理。以下代码展示了如何使用`UIImage`和Core Graphics框架中的`CGImageCreateWithImageInRect`函数来获取一张图片的部分区域: ```swift let image = UIImage(named: ...
图表之Rotation Pie Chart 图表之实时更新的曲线图 图像类 图像(Image)Transition ImageView 图像(Image)之Colorized Progress View 图像-AsyncImageView 图像-Blurred Image 图像-iOS Image Editor 图像-...
在iOS开发中,iPhone的触摸事件处理是用户体验设计的核心部分。`iPhone-Touch`这个主题主要涉及了如何在iPhone的应用程序中捕捉并响应用户的触摸操作,包括手势识别、触摸序列跟踪以及与用户交互的多种方式。以下是...
在动画块内,更新`RoundDisk`的transform属性,使用`CGAffineTransform(rotationAngle:)`创建一个旋转变换。这里的参数是角度,可以是从当前角度到目标角度的差值。 4. **手势识别**:为了响应用户的旋转操作,可以...
在Java开发中,处理图像尤其是来自移动设备如iPhone的照片时,常常会遇到一些特定的问题,例如照片上传时的旋转问题。这是因为iOS设备在拍摄照片时可能会记录照片的元数据(Exif信息),其中包括照片的旋转角度,这...
本书名为《Apress.Beginning.iPhone.Development.Exploring.the.iOS.SDK.2014》,该书旨在为初学者提供一个全面的指南,教授如何使用iOS 8 SDK及Objective-C来开发iPhone和iPad应用。本书的目标读者是对iOS应用开发...
在iOS开发中,"iPhone转盘菜单"是一种常见的交互设计,它通过动态的圆形布局提供了一种独特的用户体验。这种菜单通常被设计成半圆形,能够展示多个选项,并且通过旋转动画来选择不同的功能。在本篇文章中,我们将...
本教程源码提供了全面的实例,涵盖了iPhone应用开发中的关键元素,包括UI设计和交互。以下是对这些知识点的详细解释: 1. **控件使用**:在iOS应用中,控件是用户与应用交互的基础。本教程涵盖的控件有: - **按钮...
通过阅读《Pro iPhone Development with SwiftUI 4th Edition》,开发者可以全面提高SwiftUI技能,不仅能够熟练地构建美观、功能丰富的应用程序,还能了解并遵循Apple的最新开发趋势。无论你是初学者还是有经验的iOS...
在iOS开发中,视图切换(View Transition)是构建用户界面和交互的重要组成部分。本示例项目"(0093)-iOS/iPhone/iPad/iPod源代码-视图切换(View Transition)-Flip Card NavigationView"专注于提供一个独特的...
"(0083)-iOS/iPhone/iPAD/iPod源代码-动画(Animation)-Core Animation Demos"这个资源包,显然是为了帮助开发者深入理解和掌握Core Animation的各种使用技巧和应用场景。 Core Animation的核心概念主要包括...
"(0084)-iOS/iPhone/iPAD/iPod源代码-动画(Animation)-GraphicsAnimation"这个项目着重于如何实现图形和动画效果。下面将详细讨论相关知识点。 1. **图形变换(Graphics Transformation)**: - iOS中的`...
在iOS开发中,视图切换(View Transition)是构建用户界面和交互时不可或缺的一部分。它为应用程序提供了平滑、引人入胜的动画效果,帮助用户在不同的屏幕间导航。本资源“iOS/iPhone/iPAD/iPod源代码-视图切换...
本文将深入探讨如何在iOS平台上实现在不同设备如iPhone和iPad上根据手势方向进行360度旋转图片的功能。 首先,我们需要引入相关的框架。在iOS开发中,主要使用UIKit框架来处理用户界面和图像操作。确保在你的项目中...
第十一章"iPad Considerations"专注于iPad应用开发的特定考虑,由于iPad与iPhone的屏幕尺寸和用户交互方式不同,开发者需要对应用进行特别的适配和优化。 第十二章"Application Settings and User Defaults"讲解了...
在Android开发中,为了提升用户体验,开发者经常需要模仿其他平台,如iPhone,的交互效果。本文将详细解析如何在Android中实现类似iPhone列表数据View的刷新动画。这些动画通常用于模拟列表视图在加载新数据或刷新...
Core Animation 在 iPhone 和其他 Apple 设备上提供了高性能的图形渲染能力,并且与 Objective-C 编程语言紧密结合,使得开发者能够轻松实现各种动态效果。 #### 2. 图层(Layer)的概念 在 Core Animation 中,...
这个项目"高仿网易新闻头像旋转(iPhone源代码)"提供了一个iPhone应用的源码,由开发者@盼叔叔贡献,采用自定义授权协议。 首先,我们来探讨Core Animation。Core Animation是Apple提供的一个低级图形渲染引擎,用于...
4. **旋转(Rotation Gesture)** 旋转手势用于识别用户旋转手指的动作,常用于调整图像或对象的角度。`UIRotationGestureRecognizer`类用于识别旋转,通过监听手势的旋转角度变化,可以改变相应元素的旋转角度。 ...