Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.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 如何修改RowAtIndexPath的heightForRowAtIndexPath,使其调整其中textview的高度,但在textview为空时保持最小高度?_Ios_Swift_Uitableview_Heightforrowatindexpath - Fatal编程技术网

Ios 如何修改RowAtIndexPath的heightForRowAtIndexPath,使其调整其中textview的高度,但在textview为空时保持最小高度?

Ios 如何修改RowAtIndexPath的heightForRowAtIndexPath,使其调整其中textview的高度,但在textview为空时保持最小高度?,ios,swift,uitableview,heightforrowatindexpath,Ios,Swift,Uitableview,Heightforrowatindexpath,我有一个内部有静态单元格的tableView。一个单元格包含映射、UITextView和其他控件: 此textview具有以下约束: 到目前为止,我将此单元格的高度设置为rowatinexpath的静态值: func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { if indexPath.row == 0 { retur

我有一个内部有静态单元格的tableView。一个单元格包含映射、
UITextView
和其他控件:

此textview具有以下约束:

到目前为止,我将此单元格的
高度设置为rowatinexpath
的静态值:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
{
    if indexPath.row == 0 {
        return 311;
    }
}
但当文本变长时,文本视图(而不是增长)会包含文本,用户必须滚动文本。 基本上它的高度总是311。我想更改它,使整个单元格适应textView内容

我尝试将
return 311
更改为
return UITableViewAutomaticDimension
,但是当没有文本时,单元格会收缩,右侧的控件不可见


因此,我的问题是-如何根据内部文本设置单元格的动态高度,同时保持311的最小高度?

我不完全理解您的问题,但根据您所说的,这可能有效:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if UITableViewAutomaticDimension > 311 {
            return UITableViewAutomaticDimension
    }
    else {
       return 311
   }
}

我只是检查单元格是否应大于最小值311,然后返回最小值或更大的值

我不完全理解您的问题,但根据您所说的,这可能有效:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if UITableViewAutomaticDimension > 311 {
            return UITableViewAutomaticDimension
    }
    else {
       return 311
   }
}

我只是检查单元格是否应该大于最小值311,然后返回最小值或更大的值

向文本视图添加高度约束>=最小值(单元格为311时的高度,然后将单元格高度设置为自动。

向文本视图添加高度约束>=最小值(单元格为311时的情况,然后将单元格高度设置为自动。

如果您只是显示文本,而没有以任何方式编辑文本。您应该尝试使用UILabel,只要正确添加约束,UITableViewAutomaticDeminions将按预期工作


您可以做的是向textView添加高度约束,然后根据获得的字符串大小增加其大小。当然,您也需要调用layoutIfNeeded!UITableViewAutomaticDimensions应该处理其余部分。

如果您只是显示文本而没有以任何方式编辑文本,则应尝试使用UILab如果正确添加了约束,el和UITableViewAutomaticDeminations将与预期一样工作



您可以做的是向textView添加高度约束,然后根据您获得的字符串大小增加其大小。当然,您也需要调用layoutIfNeeded!UITableViewAutomaticDimensions应该处理其余部分。

我尝试过,但没有用……我添加了
打印(UITableViewAutomaticDimensions)“就在if声明之前,我想知道为什么:|这很奇怪,但在你的问题中,你说它有效,至少在有文本的时候?也许还可以添加@Sahil的答案,正如他在问题下解释的那样,嗯@Eric,很抱歉没有很好地描述我的问题……我试着只返回
UITableViewAu。”tomaticDimension
,但是文本根本不可见,单元格在地图的末尾,将
UITableViewAutomaticDimension
替换为
textView.frame.height
,在我的问题工作中两次?我尝试了,但没有成功…我添加了
print(UITableViewAutomaticDimension)“就在if声明之前,我想知道为什么:|这很奇怪,但在你的问题中,你说它有效,至少在有文本的时候?也许还可以添加@Sahil的答案,正如他在问题下解释的那样,嗯@Eric,很抱歉没有很好地描述我的问题……我试着只返回
UITableViewAu。”tomaticDimension
,但是文本根本不可见,在我的问题工作中,单元格在地图的末尾以
UITableViewAutomaticDimension
替换
textView.frame.height
两次?在我的例子中,最小值是95,我添加了
height>=95
约束,但是当文本很大时,这个constraint基本上保持在95,里面的文本视图是可滚动的。对我来说奇怪的是,在
cellforrowatinexpath
中,我通过
cell.textview.scrollEnabled=false禁用了滚动,但它仍然是可滚动的。你只显示文本是真的吗?如果是这样,请更改为标签并使用高度约束t、 标签在这里是否支持多行?是的,您可以将
numberOfLines
属性(在界面生成器中称为
lines
)设置为0,并根据需要扩展到任意多行。您也应该可以使用文本视图来实现这一点。我刚刚编写了一个演示项目,其中包含一个“已启用滚动”的文本视图未选中,一个>=显式高度约束,自动调整单元格大小,它起作用了。在我的例子中,最小值是95,我添加了
高度>=95
约束,但是当文本很大时,这个约束基本上保持在95,文本视图内部是可滚动的。对我来说奇怪的是,在
cellForRowAtIndexPath我通过
cell.textView.scrollEnabled=false禁用了滚动,但它仍然是可滚动的。是否仅显示文本?如果是,请更改为标签并使用高度约束。标签是否支持多行?是的,您可以设置
numberOfLines
属性(在interface builder中称为
Lines
)为0,它将根据需要扩展到任意多的行。您也可以使用文本视图来完成此操作。我刚刚编写了一个演示项目,其中包含一个“已启用滚动”的文本视图如果未选中,则为>=显式高度约束,并自动调整单元格大小。您无需手动更改约束的高度。标签自动具有优先级较低(默认情况下)的固有大小约束,该约束将设置为所需的高度