在ios8中做的屏幕旋转功能
http://www.cnblogs.com/smileEvday/archive/2013/04/24/Rotate2.html
思路出自这篇博主的文章。
直接上代码
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
NSLog(@"你旋转了");
if (toInterfaceOrientation ==UIInterfaceOrientationLandscapeLeft ) {
[self addSegmentControl:UIInterfaceOrientationLandscapeLeft];
[self.segementControl_base addTarget:self action:@selector(clickOnSegment:) forControlEvents:UIControlEventValueChanged];
[self initData];
[self initLrc]; }
else if(toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
[self addSegmentControl:UIInterfaceOrientationLandscapeRight];
[self.segementControl_base addTarget:self action:@selector(clickOnSegment:) forControlEvents:UIControlEventValueChanged];
[self initData];
[self initLrc]; }
else
{
[self addSegmentControl:UIInterfaceOrientationPortrait];
[self.segementControl_base addTarget:self action:@selector(clickOnSegment:) forControlEvents:UIControlEventValueChanged];
[self initData];
[self initLrc]; }
}
通过给对应的segment传入当前的旋转状态来设置segment在旋转到不同的方向时加载的数据
-(void)addSegmentControl:(UIInterfaceOrientation)toInterfaceOrientation
{
[self.segementControl_base removeFromSuperview];
NSArray *segmentArray = [NSArray arrayWithObjects:@"基本课文",@"应用课文" ,@"单词",nil];
UISegmentedControl * segmentControl = [[UISegmentedControl alloc]initWithItems:segmentArray];
self.segementControl_base = segmentControl;
#warning 判断旋转方式
if(UIInterfaceOrientationLandscapeLeft == toInterfaceOrientation){
segmentControl.frame = CGRectMake(, self.navigationController.navigationBar.frame.size.height, self.view.frame.size.width, self.view.frame.size.height*0.1);
}else if(toInterfaceOrientation == UIInterfaceOrientationPortrait){
segmentControl.frame = CGRectMake(, , self.view.frame.size.width, self.view.frame.size.height*0.07);
}
else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
segmentControl.frame = CGRectMake(, self.navigationController.navigationBar.frame.size.height, self.view.frame.size.width, self.view.frame.size.height*0.1);
}
segmentControl.selectedSegmentIndex = tags;
// [segmentControl addTarget:self action:@selector(onSegmentedControlChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:segmentControl];
}
通过判断旋转方向来设置segment的大小,通过给不同的segment绑定不同的tags来确定相关的数据加载。
需要思考就是,全局变量是否应该使用的这么频繁。
接下来需要解决的问题就是音乐数据的打包和点击的时候切换到相关的事件点,就是监听cell的点击。
然后就看一下appsotre是否有一个推荐的功能,重复播放音乐的功能。
还有就是双语的功能,通过点击取消中文。随后就是看一些apple的源码,看一下对于数据的封装这一块是怎么做到的。
在ios8中做的屏幕旋转功能的更多相关文章
- vue项目中图片预览旋转功能
最近项目中需要在图片预览时,可以旋转图片预览,在网上找了下,发现有一款功能强大的图片组件:viewerjs. git-hup: https://github.com/fengyuanchen/view ...
- win8中如何禁用屏幕旋转的快捷键
程序员通常会使用ctrl+alt+方向键 里编辑代码,特别对于使用eclipse的程序员,更是如此,但是win8却把这一快捷键给占用了,很不爽,如何办,很简单.直接上图: 2.但是发现禁用之后并没有解 ...
- 屏幕旋转时调用PopupWindow update方法更新位置失效的问题及解决方案
接到一个博友的反馈,在屏幕旋转时调用PopupWindow的update方法失效.使用场景如下:在一个Activity中监听屏幕旋转事件,在Activity主布局文件中有个按钮点击弹出一个Pop ...
- 【分享】迅为iTOP4412开发板-Android系统屏幕旋转设置
1.1概述 Android4.0,Androd4.4源代码能够编译成手机模式和平板模式,讯为iTop4412 开发平台 的Android系统默认编译为平板模式.客户须要依据自己的产品设计及应用环境,切 ...
- Runtime解决屏幕旋转问题
前言 大家或许在iOS程序开发中经常遇到屏幕旋转问题,比如说希望指定的页面进行不同的屏幕旋转,但由于系统提供的方法是导航控制器的全局方法,无法随意的达到这种需求.一般的解决方案是继承UINavrgat ...
- Android设置屏幕旋转后保存数据
1.onCreate()方法中最后判断需要保存的状态值 if(savedInstanceState != null){ mCurrentIndex = savedInstanceState.getIn ...
- Android动态禁用或开启屏幕旋转工具
package com.gwtsz.gts2.util; import android.content.Context; import android.provider.Settings; impor ...
- WPF中使用AxisAngleRotation3D实现CAD的2D旋转功能
原文:WPF中使用AxisAngleRotation3D实现CAD的2D旋转功能 对于CAD图形来说,3D旋转比较常用,具体实现方法在上篇文章<WPF中3D旋转的实现 >中做了 ...
- 【转】如何在 Android 程序中禁止屏幕旋转和重启Activity
原文网址:http://www.cnblogs.com/bluestorm/p/3665890.html 禁止屏幕随手机旋转变化 有时候我们希望让一个程序的界面始终保持在一个方向,不随手机方向旋转而变 ...
随机推荐
- 1900. Brainwashing Device
http://acm.timus.ru/problem.aspx?space=1&num=1900 题目大意: 有N个车站,相邻车站之间形成一个段,这样就有N-1个段,每个段最多可以放一个洗脑 ...
- iwebshop 订单存库修改为下单件库存
//减少库存量 $orderGoodsDB = new IModel('order_goods'); $orderGoodsList = $orderGoodsDB->query('order_ ...
- SVN - 忽略已经提交的文件
1.在本地删除要忽略的文件 2.与资源库同步,提交删除的文件 3.忽略文件
- 搭建web服务器环境
一. 安装apache 安装好之后测试:浏览器地址栏输入:localhost,若弹出"It works!"表明已成功安装. 管理方式:1.通过Apache自带的镜像管理器:2.wi ...
- Ubuntu下部分文件操作的命令
(1)创建目录 mkdir filefoldname (2)删除空目录 rmdir filefoldname (3)删除非空目录及其中所有文件 rm -rf filefoldname (4)移动文件或 ...
- Tri-Training: Exploiting Unlabeled Data Using Three Classifiers
Abstract – In many practical data mining applications such as web page classification, unlabeled tra ...
- qgroundcontrol开发环境搭建源码编译
qgroundcontrol是一款无人机地面站开源软件,C++/QT开发 在https://github.com/mavlink/qgroundcontrol上就能找到,选择稳定版下载最新的是2.6 ...
- QT_BEGIN_NAMESPACE QT_END_NAMESPACE
QT_BEGIN_NAMESPACEQT_END_NAMESPACE 在源代码中是这样定义的: 1 2 # define QT_BEGIN_NAMESPACE namespace QT_NAMESPA ...
- 正则验证 手机号 QQ号和邮箱
+ (BOOL) validateEmail:(NSString *)email{ NSString *emailRegex = @"^[\\w-]+(\\.[\\w-]+)*@[\\ ...
- SendInput模拟Win(VK_LWIN)键的问题
使用SendInput模拟按键,代码如下: #include "stdafx.h" #include <windows.h> #include <conio.h& ...