1

だから私はすべての向きに最適化しようとしているアプリケーションを持っています。しかし、テーブル ビューと自動回転に問題があります。これは、縦向きのときの外観です。

肖像画

デバイスを回転させると、次のようになります。

景観が悪い

しかし、テーブルに触れるとすぐに修正され、次のようになります。

景観良好

では、ユーザーがテーブルをタップするのを待たずに、ビューが回転したときに自動的にそれを行うにはどうすればよいでしょうか? ありがとう!

次のコードを試してみましたが、成功しませんでした:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation {    
    [self.tableView reloadData];
}
4

3 に答える 3

1

したがって、問題はテーブルではなく、使用していたマスク レイヤーにありました。CALayers は自動サイズ変更をサポートしていないように見えるため、次のコードを使用しています。

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation {    
    maskLayer.frame = self.maskView.bounds;
}

回転中はアニメーションしません。回転が終了し、マスクがアニメートされます。奇妙ですが、私にはうまくいきます。誰かがより良い解決策を持っている場合は、回答を削除して他の人に渡します。

于 2013-05-17T01:18:02.653 に答える
0

これがあなたとまったく同じ外観になるかどうかはわかりません(あなたの写真からはわかりません)。セルはテーブルの下部で黒くフェードアウトします。このコードは UIViewController 内にあり、テーブル ビューがサブビューとして追加されています。テーブル ビューには青色の背景色が指定されました。これは回転で完全に機能しました。

-(void)viewWillLayoutSubviews {
    self.maskGradient.frame = self.view.bounds;
}


- (void)viewDidLoad {
    [super viewDidLoad];
    self.maskGradient = [CAGradientLayer layer];
    self.maskGradient.frame = self.view.bounds;
    self.maskGradient.colors = @[(id)[[UIColor colorWithRed:0 green:0 blue:0 alpha:1] CGColor],(id)[[UIColor colorWithRed:0 green:0 blue:0 alpha:1] CGColor],(id)[[UIColor colorWithRed:0 green:0 blue:0 alpha:.2] CGColor]];
    self.maskGradient.locations = @[@0.0f,@0.9f,@1.00f];
    self.view.layer.mask = self.maskGradient;

    // other code to populate the table
    [self.tableView reloadData];
}

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.backgroundColor = [UIColor clearColor];
}
于 2013-05-17T02:11:11.653 に答える
0
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
     return YES;

    //return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

autorotaion には return yes が必要です。

于 2013-05-18T06:42:05.680 に答える