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 display中,位置和大小也被弄乱了,所以只要放一个if语句来检测它的retina display,并根据它做出不同的位置和大小。

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