获取视图列表的宽度,找到最大值并将该值设置为这些视图的宽度,最有效的方法(最少量的代码行)是什么?这个例子使用if / else作为2个视图(以帮助说明我想要完成的事情)但是如果有3个或30个视图呢?
head(FeatherData, n=10)
Location Status FeatherD Species ID
## 1 TX Resident -27.41495 Carolina wren CARW (32)
## 2 TX Resident -29.17626 Carolina wren CARW (32)
## 3 TX Resident -31.08070 Carolina wren CARW (32)
## 4 TX Migrant -169.19579 Yellow-rumped warbler YRWA (28)
## 5 TX Migrant -170.42079 Yellow-rumped warbler YRWA (28)
## 6 TX Migrant -158.66925 Yellow-rumped warbler YRWA (28)
## 7 TX Migrant -165.55278 Yellow-rumped warbler YRWA (28)
## 8 TX Migrant -170.43374 Yellow-rumped warbler YRWA (28)
## 9 TX Migrant -170.21801 Yellow-rumped warbler YRWA (28)
## 10 TX Migrant -184.45871 Yellow-rumped warbler YRWA (28)
ggplot(FeatherData, aes(x = Location, y = FeatherD)) +
geom_boxplot(alpha = 0.7, fill='#A4A4A4') +
scale_y_continuous() +
scale_x_discrete(name = "Location") +
theme_bw() +
theme(plot.title = element_text(size = 20, family = "Times", face =
"bold"),
text = element_text(size = 20, family = "Times"),
axis.title = element_text(face="bold"),
axis.text.x=element_text(size = 15)) +
ylab(expression(Feather~delta^2~H["f"]~"‰")) +
facet_grid(. ~ Status)
答案 0 :(得分:0)
听起来你正在寻找最大功能,例如:
let maxWidth = max(label1.bounds.width, label2.bounds.width)
答案 1 :(得分:0)
您可以使用max(by:)
查找具有最大值的数组元素,您可以自己定义比较函数。在这种情况下,您可以使用.frame.size.width
进行比较。
找到最大宽度后,您可以遍历所有标签并为每个标签指定最大宽度。
以下代码已经在操场上进行了测试,并且按预期工作。
let labels = [UILabel(),UILabel(),UILabel(),UILabel(),UILabel(),UILabel(),UILabel(),UILabel(),UILabel(),UILabel()]
labels[3].frame.size.width = 100
labels[5].frame.size.width = 200
let maxWidth = labels.max(by: {$0.0.frame.size.width < $0.1.frame.size.width})!.frame.size.width
labels.forEach{
$0.frame.size.width = maxWidth!
}
打印测试的宽度值:
labels.forEach{
print($0.frame.size.width) //prints 200 for each element of the array
}