我试图通过确定用户拥有哪种iPhone来自动调整项目中的表视图高度。但是,我不太确定如何调整高度。我尝试了几种方法,例如self.tableView.rowHeight = 100
等,但没有运气。
有人可以指出我正确的方向吗?
提前致谢。
答案 0 :(得分:1)
首先创建一个扩展程序,以检测哪个iPhone正在运行该应用程序:
=INDEX($A$2:$A$19,MATCH(MIN(IF($B$2:$B$19&$C$2:$C$19=B2&C2,99999,ACOS(COS(RADIANS(90-$B$2:$B$19))*COS(RADIANS(90-B2))+SIN(RADIANS(90-$B$2:$B$19))*SIN(RADIANS(90-B2))*COS(RADIANS($C$2:$C$19-C2)))*6371)),IF($B$2:$B$19&$C$2:$C$19=B2&C2,99999,ACOS(COS(RADIANS(90-$B$2:$B$19))*COS(RADIANS(90-B2))+SIN(RADIANS(90-$B$2:$B$19))*SIN(RADIANS(90-B2))*COS(RADIANS($C$2:$C$19-C2)))*6371),0),1)
然后,在你的控制器中,链接tableview委托,如果你还没有这样做:
extension UIDevice {
var iPhone: Bool {
return UIDevice().userInterfaceIdiom == .phone
}
enum ScreenType {
case iPhone4
case iPhone5
case iPhone6
case iPhone6Plus
case unknown
}
var screenType: ScreenType {
guard iPhone else { return .unknown }
switch UIScreen.main.nativeBounds.height {
case 960:
return .iPhone4
case 1136:
return .iPhone5
case 1334:
return .iPhone6
case 2208:
return .iPhone6Plus
default:
return .unknown
}
}
}
实现委托方法,以便根据iphone类型调整单元格的高度:
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}
答案 1 :(得分:0)
请在视图控制器中使用tableview的这两个委托方法
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}