2017-09-13 84 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