0

だから私はcocos2dでコードを書いていて、SWTableViewでそれをやりたいのですが、問題は、画面を垂直に配置する方法にいくつかの本当に奇妙なポピュレーションバグがあることです。

例の下の数字を使用してそれを表現しようとします。4 =セルを配置できる場所、4*=セルが配置されている場所。

今の私の画面は

1
2
3
4

3つのアイテムを入力すると、次のようになります。

1
2*
3*
4*

基本的に、私がテーブルを作成した方法は、私が望む場所である左上ではなく、左下に原点があります。setVerticalFillOrderは、最初に入力されるデータの順序を変更できることを知っていますが、TopdownとBottopUpの両方を試しましたが、どちらも上部にそのスペースがあります。

以下は私がテーブルを作成した方法ですので、誰かが何かアイデアを持っているならそれは大いにありがたいです

    CGSize winSize = [CCDirector sharedDirector].winSize;
    CGSize tableSize = CGSizeMake(table_width, table_height);

    if (_tableView) {
        [_tableView removeFromParentAndCleanup:YES];
        [_tableView release];
    }

    _tableView = [[SWTableView alloc] initWithViewSize:tableSize];
    [_tableView setDirection:SWScrollViewDirectionVertical];
    [_tableView setVerticalFillOrder:SWTableViewFillTopDown];

    [_tableView setDataSource:*my own class*];
    [_tableView setDelegate:*my own class*];

    [_tableView setPosition:CGPointMake(5, winSize.height/2-130)]; //winSize.height/2 - 160

    //refresh table
    [_tableView reloadData];

    [self addChild:_tableView];
    _tableView.isTouchEnabled = YES;
4

1 に答える 1

0

SWTableView を使用している人はそれほど多くないようですが、これは私にとって頭痛の種であることはわかっているので、この種の問題を抱えている将来の人のためにここに何かを置いておきます。

なぜこれが修正されるのかわかりませんが、このように SWTable を作成します

_tableView = [SWTableView viewWithDataSource:_friendListViewController size:tableSize];

これにより、正しい順序で上から下に入力されます。また、SWTable でさらに問題が見つかったことにも注意してください。アンカー ポイントが (0,0) にない場合、テーブルの実際の表示可能サイズが縮小します。理由はわかりません。これを修正するには、 beforeDraw に入り、スケーリングを次のように増やします

glScissor(self.position.x, self.position.y, viewSize_.width*3, viewSize_.height*3);

最後に、Retina ディスプレイでは位置とサイズもめちゃくちゃになるので、if ステートメントを入れて Retina ディスプレイかどうかを検出し、それに基づいて異なる位置とサイズを作成します。

if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
    ([UIScreen mainScreen].scale == 2.0)) {}
于 2012-12-11T16:36:50.920 に答える