使TableView淡入淡出的问题

时间:2012-06-29 02:26:59

标签: iphone ios cocoa-touch uitableview

使用UIView animateWithDuration,我将UITableView alpha设置为0,以便在消失的动画中消失。但是,我注意到当UITableView消失时,每个单元格上的区域在淡入淡出之前变黑。如果有图像,则其背后的整个区域在褪色时变为黑色,并且通常左右边缘上的插入空间变为黑色。我已尝试将UITableViewCell子视图的所有背景颜色设置为白色,但仍然无效。

此表视图未嵌入UITableViewController中。相反,它是一个单独的浮动tableView,我将其用作菜单。

以下是褪色时会发生什么的例子:

enter image description here

以下是我正在使用的代码

[UIView animateWithDuration:ImageViewControllerBarsAnimationDuration delay:0 options: UIViewAnimationOptionAllowUserInteraction animations:^
    {
            if (self.menu.superview)
            {
                self.menu.alpha = 0;
            }
    } 
completion:^(BOOL finished)
{
            if (self.menu.superview)
            {
                [self.menu removeFromSuperview];
                self.menu.alpha = 1;
            }   
}];

+

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    static NSString *cellIdentifier = @"Cell";

    UITableViewCell *tableViewCell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (tableViewCell == nil) 
    {
        tableViewCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
    }

    [[tableViewCell textLabel] setFont:[UIFont fontWithName: @"Helvetica-Bold" size: 17]];
    [[tableViewCell textLabel] setText: [self.menuItems objectAtIndex:0]];
    [[tableViewCell imageView] setImage: [self.menuItems objectAtIndex:1]];

    return tableViewCell;
}

2 个答案:

答案 0 :(得分:0)

DTS给了我解决方案,必须做到以下几点:

self.myTableView.backgroundView = nil;
self.myTableView.backgroundColor = [UIColor clearColor];

然后在cellForRowAtIndexPath方法内部必须这样做:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *kOneCellID = @"cellID";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kOneCellID];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kOneCellID] autorelease];
        cell.backgroundView = [[UIView alloc] init];
        cell.backgroundView.backgroundColor = [UIColor whiteColor];

    }

    ...
}

答案 1 :(得分:-4)

什么是self.menu?如果你将tableView放在它的位置它就可以正常工作。

[UIView animateWithDuration:ImageViewControllerBarsAnimationDuration delay:0 options: UIViewAnimationOptionAllowUserInteraction animations:^
    {
            if (tableView.superview)
            {
                tableView.alpha = 0;
            }
    } 
completion:^(BOOL finished)
{
            if (tableView.superview)
            {
                [tableView removeFromSuperview];
                tableView.alpha = 1;
            }   
}];