我正在开发一个在标签栏中包含表格视图的iOS应用程序,但是当用户按下标签栏时,应用程序崩溃并且我不确定原因 - 崩溃是由于CALayer界限包含NaN:[0 0;虽然我不知道该做什么因为这个......下面是代码:
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
#if USE_CUSTOM_DRAWING const NSInteger TOP_LABEL_TAG = 1001; const NSInteger BOTTOM_LABEL_TAG = 1002; UILabel *topLabel; UILabel
*bottomLabel;
#endif static NSString *CellIdentifier = @"Cell"; UITableViewCell
*cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { // // Create the cell. // cell = [[[UITableViewCell alloc]
initWithFrame:CGRectZero
reuseIdentifier:CellIdentifier] autorelease];
#if USE_CUSTOM_DRAWING UIImage *indicatorImage = [UIImage imageNamed:@"indicator.png"]; cell.accessoryView = [[[UIImageView alloc]
initWithImage:indicatorImage] autorelease];
const CGFloat LABEL_HEIGHT = 20; UIImage *image = [UIImage imageNamed:@"imageA.png"];
// // Create the label for the top row of text // topLabel = [[[UILabel alloc]
initWithFrame:
CGRectMake(
image.size.width + 2.0 * cell.indentationWidth,
0.5 * (aTableView.rowHeight - 2 * LABEL_HEIGHT),
aTableView.bounds.size.width -
image.size.width - 4.0 * cell.indentationWidth
- indicatorImage.size.width,
LABEL_HEIGHT)] autorelease]; [cell.contentView addSubview:topLabel];
// // Configure the properties for the text that are the same on every row // topLabel.tag = TOP_LABEL_TAG; topLabel.backgroundColor = [UIColor clearColor]; topLabel.textColor = [UIColor colorWithRed:0.25 green:0.0 blue:0.0 alpha:1.0]; topLabel.highlightedTextColor = [UIColor colorWithRed:1.0 green:1.0 blue:0.9 alpha:1.0]; topLabel.font = [UIFont fontWithName:@"Baskerville" size:25];
// // Create the label for the top row of text // bottomLabel = [[UILabel alloc]
initWithFrame:
CGRectMake(
image.size.width + 2.0 * cell.indentationWidth,
0.5 * (aTableView.rowHeight - 2 * LABEL_HEIGHT) + LABEL_HEIGHT,
aTableView.bounds.size.width -
image.size.width - 4.0 * cell.indentationWidth
- indicatorImage.size.width,
LABEL_HEIGHT)]; [cell.contentView addSubview:bottomLabel];
// // Configure the properties for the text that are the same on every row // bottomLabel.tag = BOTTOM_LABEL_TAG; bottomLabel.backgroundColor = [UIColor clearColor]; bottomLabel.textColor = [UIColor colorWithRed:0.25 green:0.0 blue:0.0 alpha:0.5]; bottomLabel.highlightedTextColor = [UIColor colorWithRed:1.0 green:1.0 blue:0.9 alpha:1.0]; bottomLabel.font = [UIFont fontWithName:@"Baskerville" size:15];
// // Create a background image view. // cell.backgroundView = [[[UIImageView alloc] init] autorelease]; cell.selectedBackgroundView = [[[UIImageView alloc] init] autorelease];
#endif }
#if USE_CUSTOM_DRAWING else { topLabel = (UILabel *)[cell viewWithTag:TOP_LABEL_TAG]; bottomLabel = (UILabel *)[cell viewWithTag:BOTTOM_LABEL_TAG]; }
return cell; }
以下是实际文件的链接:http://cl.ly/A3Kt
答案 0 :(得分:1)
问题是由使用initWithFrame:CGRectZero
引起的。将其替换为CGRectMake(0,0,1,1)
。
答案 1 :(得分:0)
您可能会混淆size
的{{1}}属性和UIImage
的{{1}}部分,size
或{{1} CGRect
的{}
构建frame
时,请尝试修改bounds
中的第三个元素。