根据屏幕转向方向和屏幕宽度变化改变UITableView显示效果 屏幕旋转

获取屏幕转向和根据转向方向设置宽度;

1、获取屏幕转向事件:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(rotateScreen) name:UIDeviceOrientationDidChangeNotification object:nil];

[NSNotificationCenter defaultCenter]:事件中心对象;

addObserver:self :添加到哪个对象;

selector:@selector(rotateScreen): 事件触发后执行什么方法;

name:UIDeviceOrientationDidChangeNotification: 设备方向改变事件;

[UIDevice currentDevice].orientation == 1 home键是否在下;

[UIDevice currentDevice].orientation 有7个方向(枚举类型),0,unknown,1,2是home键再上或再下,3,4其余为左右;

为上下设置tableView的宽度为屏幕的width,为左右时设置屏幕的宽度为height; 5、屏幕向上。。

[UIDevice currentDevice].orientation 表示device 设备的方向,设备!!!

[UIApplication sharedApplication].statusBarOrientation 表示application程序的方向,只有4个枚举值,分别对应,device中的1,2,3,4没有其它

uidevie表示当前屏幕的方向,即时转动的方向,而uiApplication表示的是屏幕从哪个方向转成现在的。

-(void)rotateScreen{
    NSLog(@"interfaceOrientation  %d",[UIDevice currentDevice].orientation);
    if([UIDevice currentDevice].orientation != 5 && [UIDevice currentDevice].orientation !=2){
         [self setKColumn];
         [self.tableView reloadData];
    }
   
}

根据屏幕方向设置tableView宽度和tableView中每个row中button大小;

-(void)setKColumn{
    if(isIPad){     //判断是否为iPad
        if([UIDevice currentDevice].orientation == 1 ){
            self.kColumn = 3;
            self.screenWidth = [[UIScreen mainScreen] bounds].size.width;
        }else{
            self.kColumn = 4;
            self.screenWidth = [[UIScreen mainScreen] bounds].size.height;
        }
    }else{
        if([UIDevice currentDevice].orientation == 1 ){
            self.kColumn = 2;
            self.screenWidth = [[UIScreen mainScreen] bounds].size.width;
        }else{
            self.kColumn = 3;
            self.screenWidth = [[UIScreen mainScreen] bounds].size.height;
        }
    }
}

=========================

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *identity = @"cell";
    DLTableViewCell *cell = [tableView dequeueReusableHeaderFooterViewWithIdentifier:identity];
    if(cell == nil){
        cell = [[DLTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identity width:self.screenWidth kCloumn:self.kColumn];
            NSLog(@"resource cell %f",self.screenWidth);
    }
    //cell.textLabel.text = ((Product *)[self.array objectAtIndex:indexPath.row]).name;
    int location = indexPath.row *self.kColumn;
    int length = self.kColumn;
    if(location + length >= self.array.count){
        length = self.array.count - location;
    }
    NSRange range = NSMakeRange(location, length);
    NSArray *rowProduct = [self.array subarrayWithRange:range];
    // 设置这个行Cell所需的产品数据
    [cell setRowProducts:rowProduct];
    return cell;
}

时间: 2024-10-07 21:01:00

根据屏幕转向方向和屏幕宽度变化改变UITableView显示效果 屏幕旋转的相关文章

使用扩展屏时设置鼠标切换到另一屏幕的方向

很多朋友在使用扩展屏时不会设置鼠标切换到另一屏幕的方向,这里提供一种非常简单的方法. 百度经验:jingyan.baidu.com 方法/步骤 1 一般来说,扩展屏幕中从主屏幕的最右边缘移动光标到另一屏幕.如果要改变这个方向,那么:先打开显示设置,进入之后可以在自定义显示器处调节所有显示器的位置. 2 调节之后点击应用即可.例如下图,将方向设置为正上方. END

通过HTML 取得页面、屏幕、浏览器的高度宽度

本篇主要介绍Web环境中屏幕.浏览器及页面的高度.宽度信息. 目录 1. 介绍:介绍页面的容器(屏幕.浏览器及页面).物理尺寸与分辨率.展示等内容. 2. 屏幕信息:介绍屏幕尺寸信息:如:屏幕.软件可用以及任务栏的高度和宽度. 3. 浏览器信息:介绍浏览器尺寸信息:如:浏览器.内部页面以及工具栏的高度和宽度. 4. 页面信息:介绍HTML页面尺寸信息:如:body总的.展示的高度和宽度. 一.介绍 1. 容器 一个页面的展示,从外到内的容器为:屏幕.浏览器以及页面本身. HTML元素展现在页面内

swiper 窗口宽度变化,页面宽度高度变化 导致自动滑动 解决方案

又又又又是swiper问题 背景: pc端项目,rem布局,swiper作为步骤条(上一步,下一步)的功能. 发现在屏幕拖动,宽高的变化,窗口大小的变化 会引起swiper自动滑动(到下一步). 在下载文件链接时候回轻微引起一点点宽高的变化,导致直接滑到下一步. Chrome浏览关闭底部下载内容时候也会导致滑动 思考: 1.刚开始以为是某个地方不小心多加了下一步的操作,一直在查找 2.然后以为是下载的方法导致的,更换了多种下载方案 3.实在没有找出,准备debugger的时候发现,屏幕变化也会引

笔画宽度变化(C++和matlab算法)

最近一直在看工作方面的书籍,把论文的事情搁置了,之前承诺的贴代码的事一直拖.现在把代码整理发上来,只有核心部分的,都不是我写的,我是网上整理下载的,matlab代码的效果比较差. 全部文件网盘下载地址:http://pan.baidu.com/s/1qWwNMfM; 1.C++代码 下载地址: 需要先安装opencv和boost库. boost库下载地址:http://www.boost.org/users/download/: boost的安装:http://www.cnblogs.com/p

【iOS】屏幕旋转,屏幕自适应方向变化

1. iOS有四个方向的旋转,为了保证自己的代码能够支持旋转,我们必须首先处理一个函数: Objective-c代码   - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } 2. 这个函数时用来确定我们的应用所支持的旋转方向.如果想要支持每个方向则直接返回YES就行,还可以单独判断某一方向: Objective-c代码   - (BO

Android 屏幕自适应方向尺寸

最近感觉要被屏幕适配玩死了…… 安卓的手机为虾米不能像苹果那样只有几个分辨率呢?为什么呢!!!!!!!阿门…… 目前想到有两种解决办法…… 第一种:   HTML5+CSS3+WebView交互……目前还在研究,空了放demo 第二种:   通过安卓UI自己的layout来处理:   1.屏幕界面布局     在 res 目录下创建不同的 layout(drawable也支持)文件夹,比如 layout-640x360 .layout-800x480 ,所有的 layout 文件在编译之后都会写

移动端设置input或者textarea宽度100%时不超出屏幕

父元素overflow:auto; input{ box-sizing: border-box; width: 100%; } 设置input或者textarea宽度100%时有padding值也不会超出出屏幕

用js判断屏幕的宽度,改变html字体大小用rem布局

if (document.documentElement.clientWidth > 600) {//页面宽度大于600px让其宽度等于600px,字体大小等于60px,居中 document.documentElement.style.width = "600px"; document.documentElement.style.fontSize = "60px"; document.documentElement.style.margin = "

css 父元素的宽度随子元素的宽度变化

当最外面的层想要设置一个 overflow: hidden,但子元素又想他们能滚动,像今日头条的滚动导航一样: html: <div id="wrapper"> <ul id="scroll"> <li>cell 1</li> <li>cell 2</li> <li>cell 3</li> <li>cell 4</li> <li>cel