在iOS 8中引入自动细胞高度后,我发现它仍然不够成熟,我需要手动计算我的细胞(有聊天内容)的大小。
我的方法tableView:heightForRowAtIndexPath:
被调用,它返回正确的高度(对于多线等也会更改,没有问题)。我确认它被称为我内部有一个断点。但是,我的表视图仍然显示如下:
其中一些文本实际上是多行的,tableView:heightForRowAtIndexPath:
返回正确的高度。但是,我的表视图只是没有正确显示它,显示所有内容,如单行。
我删除了表视图的估计行高属性,我没有使用自动单元格高度,我没有实现esimated row height delegate方法。为什么我的细胞尺寸错误?
更新我正在使用自动布局,我将文本视图连接到容器的底部。我已删除约束,现在有时有效。有时它会返回正确的大小,但有时会返回不正确的大小。
更新2:似乎问题与换行模式有关。如果我的文本很长并自然地换行到下一行,则会正确计算。但是,如果我的文本包含显式换行符,则计算错误,导致多行文本计算为单行。这是我的代码:
UIFont *textFont = [UIFont systemFontOfSize:14.f];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle.alignment = NSTextAlignmentLeft;
textAttrs = @{
NSFontAttributeName: textFont,
NSParagraphStyleAttributeName: paragraphStyle,
NSForegroundColorAttributeName: [UIColor blackColor]
};
NSString *content = message[@"content"];
CGSize fitSize = [content boundingRectWithSize:CGSizeMake(availableWidth, MAXFLOAT) options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:textAttrs context:nil].size;
此时,自然包装长文本的大小正确计算,但带有换行符的文本本身计算错误。为什么呢?
答案 0 :(得分:0)
看看我创建的示例项目:https://github.com/slotti85/AutoCellHeight。
对我来说,即使使用<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/languagetoolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<Spinner
android:id="@+id/toolbar_languageSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/array_languageSelect"
style="@style/MyTheme"
android:gravity="right" />
</android.support.v7.widget.Toolbar>
,自动计算也能正常工作。在故事板中我取消选中 UITextView
s UITextView
和User Interaction Enabled
复选框。
如果我忘记了您项目的具体内容,请告诉我......
希望它有所帮助!