如何处理iPhone代码中的屏幕位置常量?

时间:2010-09-06 23:23:12

标签: iphone objective-c constants

我需要用不同长度的环绕文本填充单元格。我当前的例程正在令人满意地处理这个问题,但是,我担心使用一些常量。

下面的值10和260表示预期的边距和单元格宽度,但它们仅对纵向的标准清晰度分辨率准确。

是否有一些屏幕/表格对象为我提供了这些值作为我可以使用的指标而不是常量?

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell;
    UILabel *lbl;
    CGRect frame;

    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero 
                                   reuseIdentifier:AnswerIdentifier] autorelease];

    frame.origin.x = 10;
    frame.origin.y = 10;
    frame.size.height = [self textHeight:indexPath];
    frame.size.width = 260;

    lbl = [[UILabel alloc] initWithFrame:frame];
    lbl.lineBreakMode = UILineBreakModeWordWrap;
    lbl.numberOfLines = 0;         
    [cell.contentView addSubview:lbl];
    [lbl release];

    return cell;

}

- (CGFloat)textHeight:(NSIndexPath *)indexPath {

    CGSize textSize;
    CGSize constraintSize;
    CGFloat height;

    NSString *theText = [self cellText:indexPath];

    constraintSize = CGSizeMake(260.0f, MAXFLOAT);

    textSize = [theText sizeWithFont:kCELL_FONT 
                   constrainedToSize:constraintSize 
                       lineBreakMode:UILineBreakModeWordWrap];
    height = textSize.height;

    return height;

}

2 个答案:

答案 0 :(得分:0)

该表显然需要适合包含视图的框架(可能是顶层视图或窗口),因此我可能会使用该矩形的百分比或像素偏移量。

答案 1 :(得分:0)

尝试使用

[[UIScreen mainScreen] applicationBounds]; 

这将为当前窗口大小返回CGRect。然后,对于您的代码,您可以使用:

CGRect screenRect = [[UIScreen mainScreen] applicationBounds]; 
frame.origin.x = 10;
frame.origin.y = 10;
frame.size.height = [self textHeight:indexPath];
frame.size.width = screenRect.size.width - 60.0;

假设x中的像素偏移是固定的,具有灵活的标签宽度。