我希望自定义surround <- function(my.df, my.var, my.val, my.method) {
ddply(my.df, my.var, function(x) c(value = my.method(x[[my.val]])))
}
my.df <- data.frame(group=rep(letters[1:4], times=25),
x=rnorm(100))
surround(my.df, "group", "x", mean)
具有多个垂直堆叠的UITableViewCell
个,其中所有这些都可以包含包含多行的文本。使用iOS9中的新UILabel
和单元格自我调整机制,我认为这将是直截了当的,但我不能让它工作。我正在使用Xcode 7beta3。
我创建了一个简单的测试应用。这是IB中的设置:
UIStackView
与UIStackView
和UIStackViewDistribution.Fill
是垂直的,但我基本上已经尝试了所有组合而没有成功。
UIStackViewAlignment.Fill
有UILabel
和numberOfLines = 0
。
代码:
lineBreakMode = .ByWordWrapping
我想知道测试版中是否存在错误,因为有时其中一个标签会包装,而另一个标签则不会。
例如,我尝试将class Cell: UITableViewCell {
@IBOutlet var label1: UILabel!
@IBOutlet var label2: UILabel!
}
class MasterViewController: UITableViewController {
struct Data {
let label1: String
let label2: String
}
var objects = [Data]()
override func viewDidLoad() {
super.viewDidLoad()
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 60
createData()
}
private func createData() {
for ii in 0 ..< 20 {
let data = Data(label1: "\(ii): hello world this is a longer string that should wrap without going weird", label2: "label2 has lots of writing as well and so should wrap onto multiple lines")
objects.append(data)
}
}
// MARK: - Table View
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return objects.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! Cell
let data = objects[indexPath.row]
cell.label1?.text = data.label1
cell.label2?.text = data.label2
return cell
}
}
嵌套在另一个UIStackView
中,如下所示:
我根本没有修改任何代码。现在一个标签包裹而另一个没有:
非常感谢任何帮助!
答案 0 :(得分:3)
问题是在单元初始化时,单元格的宽度默认为600,因此它将根据600宽度计算行的高度。这是因为在故事板中使用大小类创建了单元格。
我认为这将是测试版中的一个错误,并且作为此解决方案将您的单元格放入xib然后使用。它会正常工作。