我正在构建一个表视图节的页脚。页脚的高度将在heightForFooterInSection中指定,因此在viewForFooterInSection中,我只想添加子视图,并指定页脚视图应填充指定的任何页脚高度(此页脚大小将是动态的)。因此,我使用CGRectZero作为初始框架,并告诉页脚视图展开以填充其父视图。
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UIView *footerView = [[UIView alloc] initWithFrame:CGRectZero];
footerView = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
footerView = [UIColor greenColor];
return footerView;
}这与预期的一样--表视图的页脚完全被绿色视图填充。
但是现在我想在页脚中添加一个UITextView。文本视图应该填充相同的空间,但留下一个5点的边框:
{
UIView *footerView = [[UIView alloc] initWithFrame:CGRectZero];
footerView = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
footerView = [UIColor greenColor];
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectInset(footerView.frame, 5, 5)];
textView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
textView.backgroundColor = [UIColor redColor];
[footerView addSubview:textView];
return footerView;
}文本视图根本不会出现,而不是填充页脚视图(边距为5磅)。它可能有一个CGRectZero帧(或者甚至可能是-5 x -5?)。但是,如果我将inset设置为0,0,它会像预期的那样扩展。
对此有何解释?如果我不能为初始帧使用CGRectZero的嵌入,那么当footerView的帧不能被知道时,我应该使用什么呢?
发布于 2012-12-17 04:46:34
CGRectInset将基于现有矩形创建一个矩形。它再也不会引用页脚视图了:只有在这次计算时才会引用。在本例中,由于您尝试插入一个大小为零的矩形,因此这适用于文档:
Discussion。对矩形进行标准化,然后应用嵌入参数。如果结果矩形的高度或宽度为负值,则返回一个空矩形。
因此,您正在创建带有空矩形的标签。
我会创建一个具有“典型”大小的页脚,然后创建一个具有您想要的autoResizingMask的适当大小的标签,然后然后将您的footerView设置为零(如果这是您想要的设置)。
发布于 2012-12-17 04:30:52
我猜TextView是在后台创建内容的,所以在初始化的时候它是空的。我通常最后都会使用[string sizeWithFont:constrainedToSize:lineBreakMode:]
CGSize size = [aString sizeWithFont:[UIFont systemFontOfSize:12.0] constrainedToSize:CGSizeMake(320,500) lineBreakMode:NSLineBreakByWordWrapping];
CGRect frame = CGRectMake(0, 0, size.width, size.height);https://stackoverflow.com/questions/13905144
复制相似问题