iOS电子表格视图,旋转时的图纸剪切

iOS电子表格视图,旋转时的图纸剪切,ios,swift,spreadsheet,Ios,Swift,Spreadsheet,我有这个问题。我需要像这个截图一样旋转床单 因此,我用 并使其成为可设计的,这就是为什么我在故事板中也旋转了视图 但当应用程序启动时,我得到了以下结果: 如您所见,数据被裁剪,并且从未旋转视图的蓝色边框开始裁剪(请参见第一幅图像,高亮显示的矩形)。 如何使数据从视图的开始到结束符合所需的方向 我正在使用的库是,这是我的类: import UIKit import SpreadsheetView class TableChartViewController: UIViewController

我有这个问题。我需要像这个截图一样旋转床单

因此,我用

并使其成为可设计的,这就是为什么我在故事板中也旋转了视图

但当应用程序启动时,我得到了以下结果:

如您所见,数据被裁剪,并且从未旋转视图的蓝色边框开始裁剪(请参见第一幅图像,高亮显示的矩形)。 如何使数据从视图的开始到结束符合所需的方向

我正在使用的库是,这是我的类:

import UIKit
import SpreadsheetView

class TableChartViewController: UIViewController, SpreadsheetViewDataSource {

    var headerString = ["Luogo", "Attività", "Umore", "Tot.", "Alta", "Media", "Bassa"]
    var data = [[String]]()

    @IBOutlet weak var spreadSheetView: SpreadsheetView!

    override func viewDidLoad() {
        super.viewDidLoad()
        spreadSheetView.dataSource = self
        spreadsheetView.transform = CGAffineTransform(rotationAngle: CGFloat.pi/2)

        spreadSheetView.register(HeaderCell.self, forCellWithReuseIdentifier: String(describing: HeaderCell.self))
        spreadSheetView.register(TextCell.self, forCellWithReuseIdentifier: String(describing: TextCell.self))
    }

    //sorting funcs
    enum Sorting {
        case ascending
        case descending

        var symbol: String {
            switch self {
            case .ascending:
                return "\u{25B2}" //unicode for black up-pointing triangle
            case .descending:
                return "\u{25BC}" //unicode for black down-pointing triangle
            }
        }
    }
    var sortedColumn = (column: 0, sorting: Sorting.ascending)

    //spreadSheetView funcs
    func numberOfColumns(in spreadsheetView: SpreadsheetView) -> Int {
        return headerString.count
    }

    func numberOfRows(in spreadsheetView: SpreadsheetView) -> Int {
        return 5
    }

    func spreadsheetView(_ spreadsheetView: SpreadsheetView, widthForColumn column: Int) -> CGFloat {
        return 80
    }

    func spreadsheetView(_ spreadsheetView: SpreadsheetView, heightForRow row: Int) -> CGFloat {
        return 40
    }

    func spreadsheetView(_ spreadsheetView: SpreadsheetView, cellForItemAt indexPath: IndexPath) -> Cell? {
        if case 0 = indexPath.row {
            let cell = spreadsheetView.dequeueReusableCell(withReuseIdentifier: String(describing: HeaderCell.self), for: indexPath) as! HeaderCell
            cell.label.text = headerString[indexPath.column]

            if case indexPath.column = sortedColumn.column {
                cell.sortArrow.text = sortedColumn.sorting.symbol
            } else {
                cell.sortArrow.text = ""
            }
            cell.setNeedsLayout()

            return cell
        } else {
            let cell = spreadsheetView.dequeueReusableCell(withReuseIdentifier: String(describing: TextCell.self), for: indexPath) as! TextCell
            cell.label.text = "Prova"
            return cell
        }
    }
}

我找到了一个解决方案,不知道为什么,但它是有效的

只需使用默认类将
电子表格视图
放入另一个
ui视图
,然后旋转仅此一个。 显然,要确保将
电子表格视图
的维度与
ui视图
匹配,就这样

import UIKit
import SpreadsheetView

class TableChartViewController: UIViewController, SpreadsheetViewDataSource {

    var headerString = ["Luogo", "Attività", "Umore", "Tot.", "Alta", "Media", "Bassa"]
    var data = [[String]]()

    @IBOutlet weak var spreadSheetView: SpreadsheetView!

    override func viewDidLoad() {
        super.viewDidLoad()
        spreadSheetView.dataSource = self
        spreadsheetView.transform = CGAffineTransform(rotationAngle: CGFloat.pi/2)

        spreadSheetView.register(HeaderCell.self, forCellWithReuseIdentifier: String(describing: HeaderCell.self))
        spreadSheetView.register(TextCell.self, forCellWithReuseIdentifier: String(describing: TextCell.self))
    }

    //sorting funcs
    enum Sorting {
        case ascending
        case descending

        var symbol: String {
            switch self {
            case .ascending:
                return "\u{25B2}" //unicode for black up-pointing triangle
            case .descending:
                return "\u{25BC}" //unicode for black down-pointing triangle
            }
        }
    }
    var sortedColumn = (column: 0, sorting: Sorting.ascending)

    //spreadSheetView funcs
    func numberOfColumns(in spreadsheetView: SpreadsheetView) -> Int {
        return headerString.count
    }

    func numberOfRows(in spreadsheetView: SpreadsheetView) -> Int {
        return 5
    }

    func spreadsheetView(_ spreadsheetView: SpreadsheetView, widthForColumn column: Int) -> CGFloat {
        return 80
    }

    func spreadsheetView(_ spreadsheetView: SpreadsheetView, heightForRow row: Int) -> CGFloat {
        return 40
    }

    func spreadsheetView(_ spreadsheetView: SpreadsheetView, cellForItemAt indexPath: IndexPath) -> Cell? {
        if case 0 = indexPath.row {
            let cell = spreadsheetView.dequeueReusableCell(withReuseIdentifier: String(describing: HeaderCell.self), for: indexPath) as! HeaderCell
            cell.label.text = headerString[indexPath.column]

            if case indexPath.column = sortedColumn.column {
                cell.sortArrow.text = sortedColumn.sorting.symbol
            } else {
                cell.sortArrow.text = ""
            }
            cell.setNeedsLayout()

            return cell
        } else {
            let cell = spreadsheetView.dequeueReusableCell(withReuseIdentifier: String(describing: TextCell.self), for: indexPath) as! TextCell
            cell.label.text = "Prova"
            return cell
        }
    }
}