纵向和横向模式的不同 UITableViewCell

Posted

技术标签:

【中文标题】纵向和横向模式的不同 UITableViewCell【英文标题】:Different UITableViewCell for Portrait and Landscape Mode 【发布时间】:2020-02-27 06:46:46 【问题描述】:

当设备处于纵向模式时,我们可以为 tableview 使用不同的 TableViewCell,而当设备变为横向模式时,我们可以使用不同的 TableViewCell 吗?

【问题讨论】:

可以改用UICollectionView,在不同模式下处理垂直和水平 【参考方案1】:

是的,当然。

您可以使用以下代码行来检查当前方向,然后决定在 cellForRowAtIndexPath 方法中使用哪个单元格。

if UIDevice.current.orientation == .portrait 
    //first cell
 else 
    //second cell

我认为您还需要一个触发点来让表格视图重新加载它的单元格。

您可以重写以下方法,然后在需要时调用 reloadData 方法。

override func didRotate(from fromInterfaceOrientation: UIInterfaceOrientation) 

【讨论】:

它在应用启动时显示横向模式单元格,我必须将设备旋转到横向和纵向才能使纵向单元格出列。 var cell = UITableViewCell() if UIDevice.current.orientation == .portrait cell = tableView.dequeueReusableCell(withIdentifier: "CustomerTableViewCell", for: indexPath) //cell.textLabel?.text = “嘿,你好宝贝” else cell = tableView.dequeueReusableCell(withIdentifier: "SecondCell", for: indexPath) cell.textLabel?.text = "hbgusgdbdshfgdfjhdgjhmdngjsh" return cell 然后在 viewWillTransition 方法中重新加载单元格。 @ArshBhullar 关于获得正确的方向,还有其他答案。请检查一次。 ***.com/questions/34452650/…【参考方案2】:

如上,但func didRotate已被弃用,而是使用

viewWillTransition(to size: CGSize, 
               with coordinator: UIViewControllerTransitionCoordinator)

【讨论】:

以上是关于纵向和横向模式的不同 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 在纵向模式和横向模式下的行为不同

横向和纵向模式的不同主题

LaunchScreen.storyboard 中 iPad 启动画面的不同背景图像,用于横向和纵向模式

如何使用swift在iOS中为活动设置两种不同大小的背景图像作为横向和纵向模式

纵向和横向模式之间的转换

检测“samsung galaxy Android 2.3.5”的方向(横向和纵向模式)的事件