我有UITableviewCell子类.在那个单元格中,我有2个标签(lblComment和lblDateTimeStampe)和一个显示评级星的视图.我希望lblComment的动态高度适合所有文本.它应根据评论的长度在高度上扩展和缩小.我之前已经实现了这个,但没有像下面的AutoLayout
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *label = self.userComment.commentText;
CGSize stringSize = [label sizeWithFont:[UIFont boldSystemFontOfSize:15]
constrainedToSize:CGSizeMake(320, 9999)
lineBreakMode:UILineBreakModeWordWrap];
return stringSize.height+10;
}
Run Code Online (Sandbox Code Playgroud)
现在我正在使用AutoLayout功能.
如何使用Autolayout实现这一目标?
任何形式的帮助表示赞赏.谢谢
我想可能有一种方法可以使用自动布局轻松隐藏和显示连续按钮,以便视图可以根据可见的情况自动排列整齐.
例如,假设我有两个按钮,我总是想要在框架中居中:
// pseudo visual format code:
|-----[star][download]-----|
Run Code Online (Sandbox Code Playgroud)
当我按下下载时,我现在想要看到三个按钮:( pause是download重新标记的按钮; cancel是以前隐藏的按钮)
|--[star][cancel][pause ]--|
我想我可能总是有三个按钮但是可能会覆盖宽度以使视图在状态之间优雅地生动?我认为可能有一种更加语义的方式来实现从自动布局结构中添加和删除视图.有什么想法吗?
我有UITableView,每个tableViewCell都是自定义的.在我的customTableViewCell内部是一个UITextView,TextViews框架的引脚或与其superView相同,即tableViewCell.

我将如何动态设置UITableViewCell高度,与TextViews大小成比例,这也取决于我从互联网上获得的内容文本.
(样本原型)

//这就是我操纵每个细胞高度的方法
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
// How do I set the height here, whats the best approach for this. with autolayout BTW
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// I initialize every cell here with my ArrayContainer, nothing much to refer here.
}
Run Code Online (Sandbox Code Playgroud) 好吧,另一个UITableViewCell动态高度问题,但有点扭曲.不幸的是,我只有在发布时才能跳转到iOS 8,否则问题就会解决.需要iOS> = 7.1.
我正在尝试在单元格的顶部创建一个包含两个图像的单元格,在它们下方有一个标题标签,下面是一个描述标签.我知道两个顶部图像将是正方形,因此我希望它们具有相同的尺寸并保持方形纵横比,但在屏幕尺寸变化时调整大小(如方向更改或不同设备).
可能有助于可视化的图像(由于代表无法包含颜色,可视化帮助):http: //i.stack.imgur.com/kOhkl.png
注意最后一个文本之后的差距,那不应该在那里.
我根据以下应用程序在以前的应用程序中实现了动态高度: 在UITableView中使用自动布局进行动态单元格布局和可变行高度(成功),并且现在也使用相同的方法.
我已经使用故事板和编程方式设置了约束,但没有成功.
这是踢球者.致电时:
CGFloat height = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
Run Code Online (Sandbox Code Playgroud)
在:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)
高度值大于读取时的高度:
cell.contentView.frame
Run Code Online (Sandbox Code Playgroud)
另一个问题是,如果我删除图像上的宽高比约束并仅将其更改为显式高度约束,则它可以正常工作.
对于任何愿意帮助的人,我都会组建一个非常简单的示例项目来说明问题:https: //github.com/alefr/DynamicTableCellHeight
它设置为使用故事板进行约束,并且有一个额外的分支:ExplicitHeightConstraint,除了将纵横比约束更改为图像的高度约束之外什么都不做.
**所以问题是:**任何人都可以看到使高度计算混淆的约束有任何问题,或者是否有人有任何其他建议来获得想要的结果?(虽然我想为视图使用自动布局).
在工作中有很多限制(虽然没有什么真正的花哨)所以我认为在提供的故事板(github链接)中查找比在这里明确说明它们更容易.但如果有人幻想我也可以这样做.估计的高度计算如下:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
// Don't care about memory leaks now:
DynamicTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"dynamicCell"];
[self populateCell:cell withContent:self.tableData[indexPath.row]];
// Make sure the constraints have been set up for this cell, since it may have just been created from scratch.
// Use …Run Code Online (Sandbox Code Playgroud) 我已经在这个问题上摆弄了好几天了,我似乎无法做到这一点.
我正在尝试构建一个看起来类似于以下模型的UITableView:

据我所知,这是在UI上展示这一点的最佳方式.然而,无论我尝试什么,我似乎无法获得单元格的高度(对于GetHeightForRow方法).
加载和添加视图不是问题,问题在于它们被加载后,用数据填充不同的UI元素,并获得它们的大小.
我尝试过使用SizeToFit,但它似乎唯一影响的元素是UILabels.即使当UILabel的框架变为300高度并且我在包含标签的UI上调用SizeToFit时,它(UIView)仍然保持在320x100.这意味着当它被渲染时,它看起来都是错的.
我试图计算高度的方式非常类似于/sf/answers/1312285131/上接受的答案的第4点.也就是说,在内存中创建一个单元格,并为每行填充数据,然后在该单元格上获取高度.
我在Xcode中创建一个XIB并添加一个简单的视图作为子视图:
我想要实现的是子视图具有固定的大小,rootview会自动调整大小到该子视图的大小,并在其周围留下20.0的边距:
所以我给子视图添加了固定宽度和固定高度约束.然后我为20.0边距添加了四个约束:
由于superview没有任何约束,因此既不应该有歧义也不应该有冲突的约束:我希望superview缩小以匹配约束.然而,Xcode抱怨:
如果rootview具有固定大小并且看起来是这种情况,那么这些约束只会相互矛盾.所以我的问题是:如何使XIB的rootview灵活,以便动态调整其大小以匹配其内容?
(甚至可以使用Interface Builder吗?)
我正在使用单元格的自动布局(UITableViewCell和UICollectionViewCell),但是当重复使用单元格时我注意到了显着的性能缺陷,我想知道我该怎么做才能改进它.
也许这是由于我创建/配置单元格的方式,在我的应用程序中我需要将书籍显示为单元格,不同的书籍类型有不同的布局,但我只有一个BookCell,我在创建单元格时重新配置约束/根据书的类型重复使用特定的书.
根据我的理解,在我的情况下,自动布局应该比固定帧慢,因为步骤如下:
自动布局
我认为在第2步内部iOS将重新运行约束求解器,并且在步骤3将重新调整约束(即重新运行求解器)以满足所有具有文本和图像集的标签和图像视图.
固定布局
(具有标签,图像视图,不同类型的不同帧列表)1.重新设置所有标签',图像视图'帧2.设置标签'文本和图像视图'图像
我需要一些时间将所有自动布局单元转换为使用固定框架,我能想到的是为了提高性能:
updateConstraints方法中还是在初始化器中添加自动布局约束(例如initWithTableViewCellStyle:reusableIdentifier:)?非常感谢!
我有一个基于视图的NSTableView.我将textField其他元素NSTableCellView放在Interface Builder中的autolayout中.如何根据自动布局参数获取单元格的高度?
这个答案是我找到的最接近我要找的东西,但它是为iOS编写的,并且该systemLayoutSizeFittingSize方法不存在NSView.
请注意:我知道在类似的行上有很多例子.我正在寻找最基本的解决方案,只需要最少的设置.
我试图自己创造一个,我知道我离开了..
#import "ViewController.h"
@interface ViewController () <UITableViewDataSource, UITableViewDelegate>
@property(strong, nonatomic) UITableView *tableView;
@property(strong, nonatomic) NSMutableArray *dataArray;
@property (strong, nonatomic) UITableViewCell *customCell;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStylePlain];
[self.tableView setDataSource:self];
[self.tableView setDelegate:self];
[self.tableView setShowsVerticalScrollIndicator:NO];
self.tableView.translatesAutoresizingMaskIntoConstraints = NO;
self.tableView.rowHeight = UITableViewAutomaticDimension;
[self.view addSubview:self.tableView];
self.dataArray = [@[@"For the past 33 years, I have looked in the mirror every …Run Code Online (Sandbox Code Playgroud) 我有一个UITextViewtableViewCell,并使用此处UITableViewAutomaticDimension列出的iOS 8提供的方法.
如果用户添加新行UITextView,因此textView,单元格高度应该增加,我该如何更新高度?
尝试:
cell.layoutIfNeeded()
cell.setNeedsUpdateConstraints()
Run Code Online (Sandbox Code Playgroud)
这些不起作用.
如果我重装电池,就像
tableView.reloadRowsAtIndexPaths([iindexPath], withRowAnimation: .None)
Run Code Online (Sandbox Code Playgroud)
这工作,但后来我需要处理辞职和显示键盘.我会避免它.任何解决方法?
autolayout ×7
ios ×7
uitableview ×6
objective-c ×4
xcode ×2
c# ×1
constraints ×1
dynamic ×1
height ×1
ios6 ×1
macos ×1
nsautolayout ×1
nstableview ×1
resize ×1
uitextview ×1
xamarin ×1