Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SizetoFit与UIViewAutoresizingFlexibleHeight。有什么区别?_Ios_Uitableview - Fatal编程技术网

Ios SizetoFit与UIViewAutoresizingFlexibleHeight。有什么区别?

Ios SizetoFit与UIViewAutoresizingFlexibleHeight。有什么区别?,ios,uitableview,Ios,Uitableview,我一直被告知,如果我有一个包含动态文本内容的UILabel,我应该使用SizeToFit,因为这样可以正确调整UILabel。我使用了sizeToFit,但它弄乱了我的文本标签,这些标签在我完成滚动后出现在UITableViewCell上。但是,在初始屏幕加载时,它们看起来很好 在处理了几个小时后,我在某个地方读到其他人也有同样的问题,他们没有使用SizeToFit,而是使用了以下两行: cell.message.lineBreakMode = UILineBreakModeWordWrap;

我一直被告知,如果我有一个包含动态文本内容的UILabel,我应该使用SizeToFit,因为这样可以正确调整UILabel。我使用了sizeToFit,但它弄乱了我的文本标签,这些标签在我完成滚动后出现在UITableViewCell上。但是,在初始屏幕加载时,它们看起来很好

在处理了几个小时后,我在某个地方读到其他人也有同样的问题,他们没有使用SizeToFit,而是使用了以下两行:

 cell.message.lineBreakMode = UILineBreakModeWordWrap;
    cell.message.autoresizingMask = UIViewAutoresizingFlexibleHeight;
这会奏效的。我做到了,我的UIL标签非常完美。然而,我仍然很好奇为什么会这样

现在我的代码看起来像:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MessagesCustomViewCell";
    MessagesCustomViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MessagesCustomViewCell_iPhone" owner:self options:nil];
        cell = [nib objectAtIndex:0];  //you can also loop thru or manually remember positions
    }

    NSArray * discussion = [self.messages objectAtIndex:indexPath.row];

      cell.author.text = [discussion valueForKeyPath:@"author.name"];
      cell.message.text = [discussion valueForKey:@"text"]; //DYNAMIC VARIABLE SIZED TEXT 


    cell.message.lineBreakMode = UILineBreakModeWordWrap;
    cell.message.autoresizingMask = UIViewAutoresizingFlexibleHeight;

    return cell;
}

sizeToFit

行为:关注其内容而不是superview的大小

sizeToFit
发送到不带
的UILabel[yourLabel setNumberOfLines:0]
将使标签尽可能宽以适合其文本。使用
[yourLabel setNumberOfLines:0]
时,标签将根据其宽度将其文本拆分为多行,但这将使其高度尽可能大,以适合其文本,而不考虑superview的边界

自动重设密钥

行为:关注superview的大小而不是其内容


如果设置了UIlabel的autoResizingMask,一旦它的superview边界发生更改,它将首先更改它的帧,然后根据它的相关属性(行数、字体等)检查“我可以在rect中放置更多文本吗?”。

sizeToFit

行为:关注其内容而不是superview的大小

sizeToFit
发送到不带
的UILabel[yourLabel setNumberOfLines:0]
将使标签尽可能宽以适合其文本。使用
[yourLabel setNumberOfLines:0]
时,标签将根据其宽度将其文本拆分为多行,但这将使其高度尽可能大,以适合其文本,而不考虑superview的边界

自动重设密钥

行为:关注superview的大小而不是其内容

如果一个UIlabel的autoResizingMask被设置,一旦它的superview的边界被更改,它将首先更改它的帧,然后根据它的相对属性(numberOfLines,font,…)检查“我可以在我的rect中放置更多的文本吗?”