我没有添加任何原型单元格,但它应该根据最新的iOS 8 tableView工作.这是我的代码
class ViewController: UIViewController,UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
var tabledata = ["hn, helooo dnsjakdnksandksajndksandkasjnkc sacjkasc jkas kjdjknasjkdnsaklmdlksamxklsamxlksamdklsandk cnsdjdnsklnjnfkdnflasfnlfnkdsnfjkdnfjkdsnjkd njsdkadnaksjdnjkasndsakdnkasdnsalkdn cjkndskasdnsakndksandjksandksajndkj ndsjkadnksalndls;adnklsa;mdas,mcjksanckasdjnklscaskncjks" , "hi i am ishan, helooo dnsjakdnksandksajndksandkasjnkc sacjkasc jkas kjdjknasjkdnsaklmdlksamxklsamxlksamdklsandk cnsdjdnsklnjnfkdnflasfnlfnkdsnfjkdnfjkdsnjkd njsdkadnaksjdnjkasndsakdnkasdnsalkdn cjkndskasdnsakndksandjksandksajndkj ndsjkadnksalndls;adnklsa;mdas,mcjksanckasdjnklscaskncjkssndjkasndjksandkjasndkjasndkjasndkjasndjka ", "a" ]
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tabledata.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
cell.textLabel.text …Run Code Online (Sandbox Code Playgroud) 我有一个UILabel子视图,UIButton我从另一个视图传递值并填充UILabel.现在,我希望UILabel
必须根据内容更改其高度.如果文本为"Hello",则必须为1行,但如果文本为"我的文本太长而无法放入标签",则必须更改其大小.我用过
[self.addressLabel sizeToFit];
Run Code Online (Sandbox Code Playgroud)
但为此,我需要在UILabel下留下空白空间.我想要的是,当文本强度增加时,UILabel和UIView的大小必须扩展.
我想在一个单元格中显示两个UILabel(Title,Subtitle).
为标题:多个线> 0
为字幕:0 ≤多个线≤ 2
这里的一个错误(比如说,标题和副标题都2行,单元格的indexPath.row = 1):
我第一次运行模拟器,标题仅示出了1行和副标题显示2行.滚动tableView并返回第一个indexPath.row后,它显示正确!看起来像这样:
第一次:
-----------------
这是瓷砖,它应该显示......
这是副标题,它应该显示
2行.
-----------------
滚动并返回此单元格后:
-----------------
这是标题,它应该显示
两行.
这是副标题,它应该显示
2行.
-----------------
我做了什么:
在控制器中:tableView.estimatdRowHeight = 79
tableView.rowHeight = UITableViewAutomaticDimension
在故事板中:
对于标题:
副标题:
我好几天都对这个bug感到困惑,有什么想法可以解决这个问题吗?非常感谢!!!(抱歉缺少图像因为我没有得到足够的声誉> <)
我正在尝试创建动态调整表格视图单元格.我通过使用这个非常详细和有用的答案完成了调整大小.
但是,标签的最大宽度未正确计算heightForRowAtIndexPath.
我的单元格当前只有一个标签contentView,约束设置为将所有标签边缘固定到contentView边缘.这就是我在IB中所拥有的

小区大小正与一个屏幕外细胞计算出heightForRowAtIndexPath使用
CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
Run Code Online (Sandbox Code Playgroud)
在这个过程中,似乎它尊重约束,并且label.preferredMaxLayoutWidth属性被设置为320,但是当标签实际被渲染时,仍然有填充.

通常当我想设置我的行高然后设置
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 300
}
Run Code Online (Sandbox Code Playgroud)
我estimatedHeightForRowAt应该什么时候使用它有什么好处。
更新!如果我想设置estimatedHeightForRowAt:
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return // what should i put here
}
Run Code Online (Sandbox Code Playgroud)
更新:
如果我按照我的意愿提供estimatedHeightForRowAt,是否有任何效果表视图滚动?. 例如我给出了estimatedHeightForRowAt 500
我正在使用AutoLayout实现我的tableview单元格来显示图像和2个标签,使用动态类型来显示自适应字体大小.
我实现了estimatedHeightForRowAtIndexPath,它非常有意义且易于使用.
我没有为单元格使用界面构建器.相反,我使用砌体,这应该没有任何区别.
我目前正在努力计算实际的细胞高度.在更新自动布局代码时,手动计算是一件痛苦的事情并且难以维护.
我发现这个StackOverFlow答案:在UITableView中使用自动布局来获得动态单元格布局和可变行高度 此解决方案还应该考虑不同的字体大小,但对我来说不起作用.
当我有这样的AutoLayout系统时:UILabel顶部带有填充的contentView,另一个UILabel到带有填充的contentView底部,它应该自动计算单元格高度.
但相反,它会导致以下AutoLayout冲突:
UIView property translatesAutoresizingMaskIntoConstraints)
(
"<MASLayoutConstraint:0xc506be0 UIImageView:0xc5070a0.height == 150>",
"<MASLayoutConstraint:0xc506d90 UIImageView:0xc5070a0.top == UITableViewCellContentView:0xc5076e0.top + 10>",
"<MASLayoutConstraint:0xc506990 UILabel:0xc507450.top == UIImageView:0xc5070a0.bottom + 10>",
"<MASLayoutConstraint:0xc506630 UILabel:0xc507260.top == UILabel:0xc507450.bottom>",
"<MASLayoutConstraint:0xc506530 UILabel:0xc507260.bottom == UITableViewCellContentView:0xc5076e0.bottom>",
"<NSAutoresizingMaskLayoutConstraint:0xc3d05a0 UITableViewCellContentView:0xc5076e0.height == 44>"
)
Run Code Online (Sandbox Code Playgroud)
我使用以下AutoLayout代码:
[self.subtitleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.titleLabel.mas_bottom);
make.right.equalTo(self.contentView.mas_right).with.offset(-GCBaconCellRowPadding);
make.left.equalTo(self.contentView.mas_left).with.offset(GCBaconCellRowPadding);
make.bottom.equalTo(self.contentView.mas_bottom);
}];
Run Code Online (Sandbox Code Playgroud)
最后一行应表明单元格的高度自身延伸.
查看AutoLayout冲突的输出,看起来它想要自动将高度设置为44.0,这是默认值.
编辑:将contentView的translatesAutoresizingMaskIntoConstraints设置为NO
self.contentView.translatesAutoresizingMaskIntoConstraints = NO;
Run Code Online (Sandbox Code Playgroud)
创建单元格时会修复碰撞,但会导致行高为零.
我正在开发一个聊天应用程序,显示用户的消息和图像.我有一个表视图和一个自定义单元格.单元格有一个UIlabel和UIImage.我尝试了各种方法来根据标签的内容文本动态调整单元格高度.我 在storyboard本身设置了numberofLines = 0,并将单元格的高度设置为常量,以便多行适合.但它不显示多个线条和高度我使用自动尺寸,但它没有工作.我还使用了以下 链接 我正在使用messageTableViewCell类型的自定义单元格,其中包含标签属性.
这是快照: - 
我在viewcontroller.m中的代码
- (void)viewDidLoad
{
self.tableView.estimatedRowHeight = 100.0;
self.tableView.rowHeight = UITableViewAutomaticDimension;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
messageTableViewCell *cell = [self.messageTableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil)
{
cell = [[messageTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
cell.messageLabel.text = [_messages objectAtIndex:indexPath.row];
cell.messageLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.messageLabel.numberOfLines=0;
[cell.messageLabel sizeToFit];
return cell;
}
Run Code Online (Sandbox Code Playgroud)
编辑
而不是标签我在单元格中插入了一个textview并将其修改为:
- (void)textViewDidChange:(UITextView *)textView
{
CGFloat fixedWidth = textView.frame.size.width;
CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
CGRect newFrame = textView.frame;
newFrame.size = …Run Code Online (Sandbox Code Playgroud) 我正在使用 TableView 并有一个自定义的 TableViewCell,我已经向其中添加了一个子视图。
问题是我有时需要更改子视图的高度,因此,必须更新表的 contentView 以及行的高度。
自定义 TableViewCell 的子视图以黄色背景表示。
这些图像显示了我的模拟器中当前发生的情况。
负载

在导致子视图高度增加的事件之后

处理这样的事情的最佳方法是什么?
我应该使用约束吗?如果是这样,我应该使用什么样的约束?每次子视图的大小发生变化时,我是否也必须重新加载 tableview?
这是我目前用于自定义 TableViewCell 的代码:
import UIKit
class CustomCell: UITableViewCell {
var newView: UIView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.newView = UIView(frame: self.frame)
self.newView.backgroundColor = .yellowColor()
self.addSubview(newView)
}
required init(coder aDecoder: NSCoder) { …Run Code Online (Sandbox Code Playgroud) uitableview ×9
ios ×7
autolayout ×4
objective-c ×3
swift ×3
uilabel ×2
ios7.1 ×1
ios8 ×1
iphone ×1
tableview ×1
xcode ×1
xcode5.1 ×1
xcode6 ×1