1

ストーリーボードを使用して、tableView の tableHeaderView に設定した UIView があります。

viewDidLoad 中に次のコードを使用して、この UIView に影を付けます。

_viewHeaderInfo.layer.masksToBounds = NO;
_viewHeaderInfo.layer.shadowOffset = CGSizeMake(0, 2);
_viewHeaderInfo.layer.shadowOpacity = 0.5;

iPhone 6.0 シミュレーターで実行すると、影が表示されます。iPhone 5.1 シミュレーターで実行すると、影が表示されませ

これが影の見せ方ではないでしょうか。別の方法で行う必要がありますか?前もって感謝します!

追加情報:

特定のユーザーアクションでアニメーションを使用してビューを非表示/表示するコードがあります。ビューを表示すると(最初に非表示にした後)、アニメーションが実行されている間、影が表示されていることに気付きました。アニメーションの最後で、影は再び消えます。これは、ビューを表示するためのアニメーション コードです。

// Get references //
CGFloat h = _viewHeaderInfo.bounds.size.height;
UITableView *tv = self.tableView;


// Move the frame of the View UP by changing the .y value //
_viewHeaderInfo.frame = CGRectMake(0, -h, tv.frame.size.width, h);

// Start animation: adding the View to .tableHeaderView resets the View.frame.y to 0 //
[UIView animateWithDuration:0.3 animations:^{

    [tv scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
    tv.tableHeaderView = _viewHeaderInfo;

}];
4

1 に答える 1

1

UITableView は、セルとヘッダーを垂直に配置してテーブルを形成します。それらをサブビューとしてそれ自体に追加するだけです。それらが追加される順序は文書化されていません (OS のバージョン間で変更される可能性があります)。

レイヤーの影は、レイヤーのすぐ下、前の兄弟レイヤーの上、次の兄弟の下に表示されます。テーブルが最初にヘッダーを追加し、次にその下の (不透明な) セルを追加すると、セルが影を覆います。それらが逆の順序で追加されると、影が表示されます。

多くの場合、順序はスクロール方向に依存します。単純に、どちらのビューが最初に表示されるかによって決まります。ただし、これは文書化されておらず、変更される可能性があります。

テーブル ビューでのビューの順序に依存しないでください。

于 2012-10-05T15:27:06.277 に答える