2017-09-13 94 views
2

我有這個問題。我需要在此屏幕截圖中旋轉工作表。iOS SpreadsheetView,旋轉時切片

enter image description here

所以我

spreadsheetView.transform = CGAffineTransform(rotationAngle: CGFloat.pi/2) 

旋轉的UIView(在SpreadsheetView類的子類),並使其@IBDesignable,這就是爲什麼我在故事板旋轉過的視圖。

但是,當應用程序啓動我有這樣的結果:

enter image description here

正如你可以看到,的數據都是裁剪,他們正在裁剪從不旋轉視圖的藍色邊框,採用(見第一個圖像,突出顯示的矩形)。 如何以我需要的方向從視圖的開始到結束符合數據?

我使用的庫SpreadsheetView,這是我的課:

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

回答

1

我找到了解決辦法,不知道爲什麼,但它的工程!

剛把SpreadsheetView放在另一個UIView用默認的類和旋轉只是這一個。 顯然,請確保將SpreadsheetView的尺寸與UIView相匹配,就是這樣。

Screen of the app with this workaround