Tag: heightforrowatindexpath

我怎样才能修改heightForRowAtIndexPath,使其调整高度的TextView中,但也保持最小的高度,当textview为空?

我有一个静态单元格内的tableView。 一个单元格包含一个映射, UITextView和其他控件: 这个textview有以下限制: 到目前为止,我将heightForRowAtIndexPath设置为这个单元格的静态值: func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { if indexPath.row == 0 { return 311; } } 但是当文本更长时,textview(而不是增长)包含里面的文本,用户必须滚动它。 基本上它总是311高。 我想改变它,以便整个单元格调整到textView内容。 我试图改变return 311 return UITableViewAutomaticDimension ,但是,当没有文本时,单元格缩小,右侧的控件不可见。 所以我的问题是 – 如何根据里面的文字设置单元格的dynamic高度,还要保持311的最小高度?

在Swift中将Int更改为CGFloat以返回heightForRowAtIndexPath tableview函数

我相信我错过了一些非常简单的东西,但我却无法让它工作。 如果他们有同样的问题,我会试着更好地解释我正在做什么来帮助别人。 这是我的function: func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return (count * 40 + 75) as CGFloat } 上述function不起作用。 感谢我收到的帮助,我发现这是做到这一点的方法: func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return CGFloat(count * 40 + 75) } 谢谢!

如何更改已经加载的表格单元格的高度?

目前我有webviews加载在自定义的uitableview单元格。 问题是networking视图有可变的大小。 在webViewDidFinishLoad中,我可以根据html文档的实际大小来设置Web视图的大小。 我的问题是在web视图完成加载之前已经将其高度设置在heightForRowAtIndexPath中的表格单元格。 如何在表格单元格已经被加载之后改变它的高度? 理想情况下,我觉得我应该能够使用这样的代码行。 cellW.frame = cellW.cellWebView.frame; 不过,我似乎没有访问heightForRowAtIndexPath中的单元格信息。 我觉得我已经很好地解释了情况,但是你认为我应该发布的任何代码都可以放在这里。 我已经尝试了很多东西(所以有评论和失败的尝试在这个无处不在),但主要的问题是我似乎无法访问正确的地方,如heightForRowAtIndexPath的单元格信息。 如果我甚至可以在webViewDidFinishLoad中以某种方式设置单元格信息,我可以简单地设置单元格的框架,我也在设置Web视图的框架大小。 下面是我的表格单元格子类的设置。 #import <UIKit/UIKit.h> #import "DefinitionsAndConstants.h" @interface UITableViewCellWebView : UITableViewCell { UIWebView *cellWebView; } @property (nonatomic,retain) UIWebView *cellWebView; @end 这是我最后试图使用部分加文的代码。 但是当然,现在没有办法设置表格单元格了,因为cellForRowAtIndexPath是不可分配的。 -(void)webViewDidFinishLoad:(UIWebView *)webViews { [webViews stringByEvaluatingJavaScriptFromString:@"twitterfy()"]; [webViews stringByEvaluatingJavaScriptFromString:@"document.getElementById('tweettext').innerHTML=tweet"]; NSString* h = [webViews stringByEvaluatingJavaScriptFromString:@"getDocHeightMax()"]; int height = [h intValue]; webViews.frame = CGRectMake(0.0f, 0.0f, 320.0f, […]

UITableView分隔符通过单元重用绘制不正确?

我正在与故事板一起工作iOS 5项目,因此在IB中使用dynamic表格单元格原型。 在其中的一个意见,我有一个可变高度单元格的表格视图,单元格的高度从内容的高度计算。 tableView:heightForRowAtIndexPath:当第一次显示表视图时,返回所有单元格的正确值。 所有这一切都很好,当滚动几个项目,但然后有什么不对劲:实际单元格似乎是正确的高度,包括他们的触摸区域,但他们的分隔符被渲染在错误的地方(单元格之间,而不是他们之间)。 从测量分隔符的位置来看,似乎电池再利用可能与此有关。 前三个单元格的分隔符被正确渲染,但不是第四个。 heightForRowAtIndexPath:返回正确的高度(在这种情况下为125像素),其包含的子视图都在正确的位置。 但是,分隔符仅从前一个分隔符呈现108像素,将其放置在单元格的125像素高区域内。 这里是踢球者:108px是第一个表格单元格的高度,现在看不见了,可能重用。 我没有这方面的明确证据,但似乎表视图忽略heightForRowAtIndexPath:对于这些单元格,只是根据重用的单元格高度来呈现分隔符。 这并不能解释为什么一堆后来更短的单元格根本就没有渲染分隔符。 但这是我必须继续。 是否有解决方法,IB设置或其他可能的帮助?

Swift TableView崩溃:“缺less新可见行的单元格”

我在向tableview添加新行时遇到崩溃。 简而言之,崩溃日志说“缺less单元格为新的可见行3”。 再生产 1.将N个对象添加到数据源 2.手动添加相同数量的单元格到tableview 3.使用beginUpdates – endUpdates重新加载和animation 已知的问题 这个崩溃已经在苹果 问题上讨论过了。 他们对这个问题的解决scheme(不使用估计的细胞高度)不适合我,因为我需要2个不同高度的细胞。 我的tableview是由2个不同的单元格类组成的。 两者都有自己的标准高度,configuration如下: func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { if indexPath.row % (straightsetLogs.count + 1) == 0 { return 44 } else { return tableView.rowHeight } } func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: […]

从Storyboard加载自定义的UITableViewCell

目前我正在使用故事板的自动布局来dynamic调整自定义UITableViewCell的大小。 除了滚动时存在内存泄漏之外,一切正常,因为它应该如此。 我知道问题来自于呼叫 [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 从内部 – (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 我的问题是,创build参考单元的最佳方法是什么? 如何从故事板加载一个没有dequeueReusableCellWithIdentifier的单元格? 可以从viewDidLoad调用dequeueReusableCellWithIdentifier并创build一个引用单元格作为属性? 我需要参考单元的尺寸目的。 谢谢你的帮助。

heightForRowAtIndexPath间歇性地崩溃

我有一个约30个活跃用户和500多个注册用户的应用程序,这个问题只发生在一个使用iPhone 6的9.2上。 从崩溃报告中我可以看到,她已经有60多起车祸,她曾经说过这个问题有时候可以,而不是其他的。 我在这里有相同的testing设备,没有问题发生。 我不能从织物的崩溃报告详细信息中得到很多,但崩溃发生在下面的方法和应用程序崩溃在这个方法的最后其他方面,我可以从她的问题的描述: func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { let bounds = UIScreen.mainScreen().bounds var screenWidth = bounds.size.width let screenHeight = bounds.size.height if indexPath.row == 0 { let font = UIFont(name: "Helvetica Neue", size: 17.0) let heightCalc = heightForView(self.postDescription!, font: font!, width: screenWidth – 32) if self.photoWidth != nil{ let imageAspectRatio […]

UITableViewCell框架高度不匹配tableView:heightForRowAtIndexPath:

我构build了一个可变高度自定义表单元的UITableView,它们的高度由包含的多行UILabel的大小决定。 我已经得到了tableView:heightForRowAtIndexPath:委托方法连接起来,并使用sizeWithFont:constrainedToSize:正确计算最终的高度。 我遇到了一个奇怪的问题:在数据源方法tableView:cellForRowAtIndexPath:被调用的时候,正确的每行高度已经被确定,如上所述,但单元格的框架不匹配那个高度。 相反,单元格的frame.size.height属性是表视图的默认单元高度( frame.size.height ,因为我已经在Interface Builder中设置了它,正确的高度,当包含的UILabel只有一行文本),而不是高度tableView:heightForRowAtIndexPath:确定正确的索引path。 我在cellForRowAtIndexPath:生成单元格cellForRowAtIndexPath:使用出列,也就是说, // Using storyboards, this never returns nil, no need to check for it CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"SomeIdentifier"]; NSLog(@"%f", cell.frame.size.height); // 86, not correct if the cell contains a multi-line UILabel 那么,无论iOS在幕后做什么,出列都不会将单元格的框架属性设置为与计算出的高度相匹配。 这本身并不令人惊讶,它将细胞本身排除在外,而不是它们的几何形状。 虽然单元格的渲染是正确的,所以height属性被设置在某个地方 ,但是它发生在cellForRowAtIndexPath:之后。 所以:当我最初填充表视图时, cell.frame.size.height是所有单元格的86,因为它们是我第一次向下滚动列表时出现的。 由于在第一个cellForRowAtIndexPath:之后的某个时间设置了正确的几何cellForRowAtIndexPath:在显示每一行之前,当向后滚动时,对于重新使用后重新回到视图中的每个单元格,height属性都是正确的。 在此之后,我可以随意滚动表格视图,高度属性保持正确的每个细胞从这一点上。 在任何基于出队的重用发生之前,第一次获得正确的单元高度的正确方法是什么? 我需要这个来重新定位表格单元格的子视图。 我是否需要手动调用heightForRowAtIndexPath:在cellForRowAtIndexPath:然后手动设置新创build的CustomCell实例的框架以匹配那个高度? 这似乎是多余的,我需要创build一个机制来检测何时第一次创build了具有错误框架高度的单元格,以及是否稍后使用正确的框架高度出列以避免冗余。 所以,如果有人能够说明这背后的逻辑是什么,我会很感激。

在性能问题之前调用UITableView中所有行和多less行的heightForRowAtIndexPath?

我以为我读了一个UITableView heightForRowAtIndexPath不会被所有行调用,但只有那些将是可见的。 这不是我所看到的。 例如,我看到数百个针对iPhone的方向被改变的简单情况的heightForRowAtIndexPath调用。 所以我在这里假设,因此,对于一个UITableView与heightForRowAtIndexPath实现,它((即heightForRowAtIndexPath )被调用的所有行(不只是可见的)…让我知道如果这是不正确的。 问题:鉴于上述情况,通常会出现性能问题之前, UITableView中有多less行(其中实现了heightForRowAtIndexPath )? 有没有解决性能问题的方法? 即设置一个名义/标准高度的每一行,而不是实现heightForRowAtIndexPath ,但然后正确地设置每个行的高度,只有当它被显示,并在这里设置正确…但是哪种方法可以做到这一点?