使用UIView animateWithDuration
,我将UITableView
alpha设置为0,以便在消失的动画中消失。但是,我注意到当UITableView
消失时,每个单元格上的区域在淡入淡出之前变黑。如果有图像,则其背后的整个区域在褪色时变为黑色,并且通常左右边缘上的插入空间变为黑色。我已尝试将UITableViewCell
子视图的所有背景颜色设置为白色,但仍然无效。
此表视图未嵌入UITableViewController中。相反,它是一个单独的浮动tableView,我将其用作菜单。
以下是褪色时会发生什么的例子:
以下是我正在使用的代码
[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;
}
答案 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;
}
}];