1

我正在使用 Xcode 6,Beta 5。Swift 语言。

我的代码具有带有 tableview 和自定义 tableview 单元格的 viewcontroller。tableCell 中有 3 个标签和一个图像视图。

问题是:只出现了一半的单元格。它看起来像这样:

http://i.stack.imgur.com/JO4A4.png

http://i.stack.imgur.com/Ku5Og.png

这是我发现的一些有趣的东西。直到 XCode 5,tableviews 和 viewcontrollers 在情节提要中的默认大小是 320x568。

现在使用 Xcode 6,Beta 5,tableviews 和 viewcontrollers 在情节提要中似乎默认大小为 600x600

这会弄乱我的布局吗?

我的代码如下所示:

//OrderHistoryDetailViewController

class OrderHistoryDetailViewController: ViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var orderPlacedLabel: UILabel!
@IBOutlet weak var orderItemsTableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()
}

//MARK: UITableViewDataSource methods

func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
    return 2
}

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
    var orderDetailCell: OrderHistoryDetailCell = tableView.dequeueReusableCellWithIdentifier("OrderDetailCell") as OrderHistoryDetailCell        
    orderDetailCell.priceLabel.text = "$34.89"
    orderDetailCell.quantityOrderedLabel.text = "QTY:1|$34.89 each"
    orderDetailCell.itemOrderedNameLabel.text = "Tooled Leather Laptop Cover"
    orderDetailCell.thumbNailImageView.image = UIImage(named: "laptopCover.png")        
    return orderDetailCell
} 
}

//OrderHistoryDetailCell
class OrderHistoryDetailCell: UITableViewCell {

    @IBOutlet weak var thumbNailImageView: UIImageView!
    @IBOutlet weak var itemOrderedNameLabel: UILabel!
    @IBOutlet weak var quantityOrderedLabel: UILabel!
    @IBOutlet weak var priceLabel: UILabel!
}
4

1 回答 1

1

Xcode 6 中新的通用 iOS8 模板带有大小类。您可以在 Interface Builder 中更改此默认设置:转到 File Inspector 并取消选中“Use size classes”。然后,您将能够在一个 Storyboard 中使用 iPhone 大小的视图控制器场景(例如 320x568),并在另一个 Storyboard 中使用 iPad 大小的视图控制器场景。但是,除非您有充分的理由,否则我不鼓励您这样做。

Size Classes(与他们最好的朋友 Auto layout 一起使用)有很多优势。其中之一是您可以在唯一 Storyboard 的同一视图控制器场景中定义约束(或字体或子视图),例如仅在纵向模式下为 iPhone 设置(紧凑宽度/常规高度)和其他仅在横向模式下为 iPad 设置的约束(或字体或子视图)(常规宽度/任何高度)。

因此,您提到的 600x600 大小的视图控制器场景不对应于任何特定设备,但允许您提供适合任何屏幕宽度和任何屏幕高度的约束。您可以通过WWDC 2014 视频会话 411“Interface Builder 中的新功能”(从 30 分钟开始)了解更多关于大小类的信息。

所以,为了回答你的问题:我认为你应该在你的项目中保留大小类并使用自动布局。然后,您应该检查您的 tableView 约束和单元格的 contentView 子视图约束。

于 2014-08-17T23:17:16.600 回答