自定义UIView的tableView委托方法

问题描述:

我想创建我自己的自定义UIView分组UITableView的标题。这是我到目前为止玩的代码:自定义UIView的tableView委托方法

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    Target *aTarget = [targetDictionary objectForKey:[NSNumber numberWithInteger:section]]; 
    UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, self.TargetTableView.frame.size.width, 20)]; 
    headerLabel.text = [NSString stringWithFormat:@"%@", aTarget.condition]; 
    headerLabel.textColor = [UIColor whiteColor]; 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.TargetTableView.frame.size.width, 200)]; 
    headerView.backgroundColor = [UIColor orangeColor]; 
// [headerView addSubview:headerLabel]; 

    return [headerView autorelease]; 
} 

几个问题。对于我的headerView,我希望高度为40,但看起来很小。然后我将它改为60,并且我看到它在我的UITableView中根本没有改变(我在弹出窗口中呈现这些数据,我认为这不应该是重要的)。所以我做了200的高度,看看它是否会改变,我看到的橙色视图很小。可能只有状态栏那么大。我们有我的UILabel。我希望它能以我的UIView为中心。当我展示它时,它甚至不在我的UIView中。这是我的第一排UITableView的顶部。当我使用CGRectMake()初始化它时,它是将它设置在父视图的坐标中还是将它移开?我试图创建它,当我将它添加到我的headerView中时,我想定位它。

最后,如果我想添加一个简单的背景渐变到我的tableView,我只是设置UITableView.backgroundColor = [UIColor clearColor],并将backgroundView设置为渐变?因为这似乎不工作?我只看到分组tableView的默认颜色。谢谢。

+0

可能需要将其分解为单独的问题。首先,你是否实现了'tableView:heightForHeaderInSection:'? – jrturton 2012-01-30 22:04:35

如果您在tableview的指定方法tableView:heightForHeaderInSection:中添加高度,则可以解决标题高度问题。

对于颜色问题,我认为你应该设置单元格的背景颜色为clearColor,然后你应该能够得到想要的效果。

关于UILabel,使其居中的最佳方法是使其与标题视图具有相同的宽度和高度,并将它的textAlignment属性设置为UITextAlignmentCenter