1

デバイスが縦向きか横向きかによって異なるセルの高さを定義する必要がある tableView がありますが、このメソッドはデバイスの向きを認識しないようです。この方法は機能しません:

  -(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{


  UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice]orientation];//here doesn't recognize the orientation


 if(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPhone){
     if(deviceOrientation == UIInterfaceOrientationPortrait || deviceOrientation== UIInterfaceOrientationPortraitUpsideDown) {
         self.tableView.rowHeight =33.33333;

     }
     else if (deviceOrientation== UIInterfaceOrientationLandscapeRight || deviceOrientation==UIInterfaceOrientationLandscapeLeft){

         self.tableView.rowHeight = 16.333333;
     }
 }

 else {
     if(deviceOrientation == UIInterfaceOrientationPortrait || deviceOrientation== UIInterfaceOrientationPortraitUpsideDown){
         self.tableView.rowHeight = 66.66666;

     }else if (deviceOrientation== UIInterfaceOrientationLandscapeRight || deviceOrientation==UIInterfaceOrientationLandscapeLeft){
         self.tableView.rowHeight = 33.333333;

     }

 }
 return self.tableView.rowHeight;

}
4

2 に答える 2

0

シングルトンクラスメソッドを使用するUIDeviceOrientationdeviceOrientation= [UIApplication sharedApplication] .statusBarOrientation];

于 2012-10-30T10:26:57.570 に答える
0

使用する:

UIDeviceOrientation deviceOrientation = [UIApplication sharedApplication].statusBarOrientation;

代わりに statusBar の向きを認識するには:

UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice]orientation];
于 2012-10-30T09:44:10.527 に答える