4

画面上のサブビューの位置を修正するにはどうすればよいですか (特に UIScrollView と UITableView で)。絵コンテで思う

[self.view addSubview:aSubView];

もう機能しません。

何か案は?

編集 #1 : 単純な UITableView ではなく、UITableViewController を使用しています。

編集#2

CGRect fixedFrame = self.menuViewRelative.frame;
fixedFrame.origin.y = 0 + scrollView.contentOffset.y;
self.menuViewRelative.frame = fixedFrame;

menuViewRelative = [[UIView alloc] init];
menuViewRelative.backgroundColor = [UIColor grayColor];
menuViewRelative.frame = CGRectMake(0.0, 0.0, 320.0, 50.0);

[self.view addSubview:self.menuViewRelative];
4

4 に答える 4

17

他の人が指摘したように、 a を使用しない場合は少し簡単になりますが、UITableViewControllerそれほど難しくはありません。

UITableViewは のサブクラスでUIScrollViewあるため、テーブル ビューのデリゲート (UITableViewControllerこの場合はインスタンス) もUIScrollViewDelegateメソッド呼び出しを受け取ります。スクロール オフセットが変更されるたびに呼び出されるメソッドを実装し、「固定」ビューのフレームを調整するだけです。

このようなもの:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGRect fixedFrame = self.fixedView.frame;
    fixedFrame.origin.y = 20 + scrollView.contentOffset.y;
    self.fixedView.frame = fixedFrame;
}

20 を、テーブル ビューの最上部からのポイント数に置き換えます。self.fixedViewのサブビューとして引き続き追加しますself.view。これにより、テーブル ビューの上の固定位置にあるように見えるようになります。


編集:あなたが投稿したコードでは、あなたのバージョンは次のようになるはずです:

- (void)viewDidLoad {
    menuViewRelative = [[UIView alloc] init];
    menuViewRelative.backgroundColor = [UIColor grayColor];
    menuViewRelative.frame = CGRectMake(0.0, 0.0, 320.0, 50.0);

    [self.view addSubview:self.menuViewRelative];
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
    CGRect fixedFrame = self.menuViewRelative.frame;
    fixedFrame.origin.y = 0 + scrollView.contentOffset.y;
    self.menuViewRelative.frame = fixedFrame;
}
于 2012-12-02T18:14:10.833 に答える
3

次のように、サブビューをウィンドウに追加できますか。

[self.view.window addSubview:mySubView];

わたしにはできる。動的テーブル ビューに pix 位置情報ビューを追加しました。

于 2013-03-06T16:03:03.063 に答える
0

テーブルビューを含む単純なView Controllerの場合、 [self.view addSubview:aSubView] が機能するはずです。ただし、テーブルビューコントローラーの場合は機能しません。

于 2012-12-02T10:40:54.170 に答える