Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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
Iphone 我可以阻止UITableViewCell自动调整其子视图的大小吗?_Iphone_Cocoa Touch_Uitableview - Fatal编程技术网

Iphone 我可以阻止UITableViewCell自动调整其子视图的大小吗?

Iphone 我可以阻止UITableViewCell自动调整其子视图的大小吗?,iphone,cocoa-touch,uitableview,Iphone,Cocoa Touch,Uitableview,我有一个UITableView,每个单元格中都有自定义背景图像。底部单元格的图像比其他单元格高,因为它包含阴影。这意味着我必须将截面中最后一个单元的高度延长到比正常值更高 当我这样做时,UITableViewCell的内容看起来像是放在单元格的底部而不是中间(因为可视单元格比实际单元格短)。是否有一种方法可以使我的内容从顶部而不是中间定位,并且当某个单元格变为底部单元格时(由于删除或其他原因),不会让UITableViewCell调整其大小 将标签上的自动调整大小遮罩设置为具有静态顶部边界不起作

我有一个
UITableView
,每个单元格中都有自定义背景图像。底部单元格的图像比其他单元格高,因为它包含阴影。这意味着我必须将截面中最后一个单元的高度延长到比正常值更高

当我这样做时,
UITableViewCell
的内容看起来像是放在单元格的底部而不是中间(因为可视单元格比实际单元格短)。是否有一种方法可以使我的内容从顶部而不是中间定位,并且当某个单元格变为底部单元格时(由于删除或其他原因),不会让
UITableViewCell
调整其大小

将标签上的自动调整大小遮罩设置为具有静态顶部边界不起作用,在单元格上关闭
自动调整大小SSUBVIEWS
也不起作用

我还考虑过简单地将所有单元格设置为相同高度,并在背景图像上关闭
clipstobunds
,但背景图像是水平和垂直均可拉伸的图像,并且需要能够根据单元格内容的高度调整大小


任何其他不涉及黑客方法的想法?

表格视图中的底部单元格只是在视觉上被剪裁,技术上没有调整大小,因为
值在内部是相同的

我想你的意思是你希望你的文本与单元格的顶部垂直对齐,对吗

如果是这样的话,您可以通过调整包含文本的
UILabel
的大小,使其与包含的文本具有相同的垂直大小,并确保标签与单元格顶部齐平,或者尽可能靠近单元格来实现这一点(加上几个像素的填充,看起来会更好)

你怎么知道文本的大小?您可以在
NSString
上使用方便的dandy
sizeWithFont:…
方法(从技术上讲,它不在原始类定义中,而是在原始类定义中)。以下是一些示例代码:

NSString *myString = @"lorem ipsum dolor yadda";
UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14];
CGSize myStringSize = [myString sizeWithFont:myFont 
                           constrainedToSize:textLabel.frame.size
                               lineBreakMode:textLabel.lineBreakMode];

textLabel.frame = CGRectMake(10, 10, /* Or whichever origin you want. */
                             textLabel.frame.size.width, myStringSize.height);
请在tableView控制器内尝试tableView:HeightforRowatinexPath:。请记住将UITableViewDelegate作为协议包括在内

查看限制和您可以返回的内容

编辑: 好的,了解更多关于你的问题,试试看

-(BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath{
return NO;
}

我还没有找到一个自动解决这个问题的方法。相反,我重写了几个函数(
textlab
detailtextlab
setAccessoryView:
)来使用我自己的标签,这些标签按照我的要求自动调整大小


我还必须重写willTransitionState:方法,深入研究实现细节,以使添加/删除和删除确认按钮移动到我想要的位置。

我遇到了类似的问题()。解决方案是在我的自定义表视图单元格类中覆盖LayoutSubview,什么也不做。

这是一篇旧文章,但我在搜索相同问题时遇到了它

覆盖LayoutSubview可能会隐藏问题,但它不能解决问题,也不能在任何情况下都有效

我的猜测是,这里有几个人使用相同的名称将标签添加到他们的自定义单元格中。这会导致位置不正确的行为,直到出现名称冲突时才滚动。这是我找到这个的地方


用不同于标准标签的名称重做IBOutlets为我修复了它。

在我的例子中,我的单元格中只有一个UIImageView,无论发生什么情况,它都会将其调整为完整单元格大小。尝试了这里提到的所有解决方案。 奇怪的是,我还有一个更复杂的单元格,其中有一个UIImageView+UIPageControl+UILabel+UIButton。。只有当只有一个UIImageView时,它才会表现得很糟糕


我的解决方法是放置一个UIButton而不是图像,并将该图像作为按钮的背景图像。

谢谢,但不谢谢。我已经在使用它来返回行的高度(对于最下面的行,它必须更大,因为图像更大)。如果我为所有行返回相同的大小,则底部的行看起来太小。您可以使用IndexPath选择一行,仅调整最后一行的大小,而保留其余行的正确大小。if(indexPath.row==[array count])返回100,否则返回50;可能会解决单元格自动调整大小的问题。不,不,不。我已经这样做了,因为最后一行需要比其他行大,但视觉上它需要看起来相同(因此我使用的是可拉伸图像)。自动调整大小的问题不是单元本身改变高度,而是它在进出编辑模式时移动其子视图。哦,现在我知道你在做什么了。我看得出你很沮丧,但问题并不简洁。无论如何,我相信您正在寻找“tableView:ShouldinetwheedingRowatindexpath:”其中您为编辑时不希望缩进的行返回布尔值。我的问题不是调整大小;它确保它保持那个尺寸。该标签是标准的UITableViewCell.textLabel,无论我将其放置在何处,只要单元格的变换发生变化(即打开/关闭编辑模式),它似乎都会移回自己的位置。谢谢!最后,一个真正的答案!调用[super layoutSubviews]可能会导致出现此问题。“什么都不做”是关键!大家好,这是一位来自2014年的iOS开发人员,他使用iOS 7构建了一个iOS系统,而这一切仍然在发生。真不敢相信。