通过Swift中的代码调整tableView高度

时间:2017-02-08 12:21:21

标签: swift height tableview tableviewcell

我试图通过确定用户拥有哪种iPhone来自动调整项目中的表视图高度。但是,我不太确定如何调整高度。我尝试了几种方法,例如self.tableView.rowHeight = 100等,但没有运气。

有人可以指出我正确的方向吗?

提前致谢。

Table view constraints

Table view constraints

2 个答案:

答案 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
}