• 在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(0, 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(0, 67, self.view.frame.size.width, self.view.frame.size.height*0.07);
        }
        else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
        {
            segmentControl.frame  = CGRectMake(0, 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的源码,看一下对于数据的封装这一块是怎么做到的。

    纸上得来终觉浅,绝知此事要躬行
  • 相关阅读:
    python中以带mixin命名的类有什么特点?
    php使用redis做缓存和使用redis保存session
    python连接hive数据库count查询慢的解决办法
    内网环境数据库查看工具使用笔记支持hive edismysql
    深入mysql的视图复习笔记
    Laravel 整合IOS苹果授权登录(JWT验证模式)
    PHP 读取PDF文件内容之PdfParser
    git发生冲突:error: Your local changes to the following files would be overwritten by merge
    PHP 创建GUID唯一标识
    Laravel 模型关联、关联查询、预加载使用实例
  • 原文地址:https://www.cnblogs.com/asheng/p/4382137.html
Copyright © 2020-2023  润新知