2

テーブルビューのセクションのフッターを作成しています。フッターの高さはで指定されるheightForFooterInSectionのでviewForFooterInSection、サブビューを追加して、指定されたフッターの高さをフッタービューで埋めるように指定します(このフッターのサイズは動的になります)。そのため、最初のフレームとして使用CGRectZeroし、フッタービューに親ビューを埋めるために展開するように指示しています。

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    UIView *footerView = [[UIView alloc] initWithFrame:CGRectZero];
    footerView = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    footerView = [UIColor greenColor];
    return footerView;
}

これは期待どおりに機能します。テーブルビューのフッターは完全に緑色のビューで埋められます。

UITextViewしかし今、私はフッターにを追加したいと思います。テキストビューは同じスペースを埋める必要がありますが、5ポイントの境界線を残します。

{
    UIView *footerView = [[UIView alloc] initWithFrame:CGRectZero];
    footerView = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    footerView = [UIColor greenColor];

    UITextView *textView = [[UITextView alloc] initWithFrame:CGRectInset(footerView.frame, 5, 5)];
    textView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    textView.backgroundColor = [UIColor redColor];

    [footerView addSubview:textView];
    return footerView;
}

フッタービュー(5ポイントのマージン)を埋める代わりに、テキストビューはまったく表示されません。CGRectZeroおそらく(またはおそらく-5 x -5?)のフレームがあります。ただし、挿入図を0、0に設定すると、期待どおりに拡張されます。

これの説明は何ですか?またCGRectZero、最初のフレームにのインセットを使用できない場合、footerViewのフレームがわからない場合に何を使用する予定ですか?

4

2 に答える 2

1

CGRectInsetは、既存の長方形に基づいて長方形を作成します。フッタービューを二度と参照することはありません。これを一度計算する場合のみです。この場合、サイズがゼロの長方形をはめ込もうとしているので、これはドキュメントから適用されます。

ディスカッション。長方形が標準化されてから、挿入パラメータが適用されます。結果の長方形の高さまたは幅が負の場合、nullの長方形が返されます。

したがって、nullの長方形でラベルを作成しています。

「通常の」サイズのフッターを作成し、次に必要なautoResizingMaskを使用して適切なサイズのラベルを作成し、必要に応じてfooterViewをゼロ設定します。

于 2012-12-16T20:46:33.647 に答える
0

TextViewはバックグラウンドでコンテンツを作成すると思いますので、初期化の時点では空です。私はいつも使うことになります[string sizeWithFont:constrainedToSize:lineBreakMode:]

CGSize size = [aString sizeWithFont:[UIFont systemFontOfSize:12.0] constrainedToSize:CGSizeMake(320,500) lineBreakMode:NSLineBreakByWordWrapping];
CGRect frame = CGRectMake(0, 0, size.width, size.height);
于 2012-12-16T20:30:52.373 に答える