首页 > 代码库 > 根据屏幕转向方向和屏幕宽度变化改变UITableView显示效果 屏幕旋转
根据屏幕转向方向和屏幕宽度变化改变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];
}
}
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;
}
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;
}
根据屏幕转向方向和屏幕宽度变化改变UITableView显示效果 屏幕旋转
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。