菜鸟教程小白 发表于 2022-12-11 16:55:15

swift - 根据屏幕尺寸调整 CollectionView 中项目布局的大小,保持纵横比 [Swift]


                                            <p><p>我正在尝试将 CollectionView 中项目布局的大小调整为保持纵横比的屏幕大小。到目前为止,它只在 iPad 上运行良好,我已经根据 Assets 的尺寸设置了高度和宽度:</p>
<pre><code>private let CardWidth: CGFloat = 362
private let CardHeight: CGFloat = 568
</code></pre>
<p>然后在<code>CardLayout</code>类中,继承自<code>UICollectionViewFlowDelegate</code>:</p>
<pre><code>required init?(coder aDecoder: NSCoder) {
   super.init(coder: aDecoder)
   
   scrollDirection = UICollectionViewScrollDirection.Horizontal
   itemSize = CGSizeMake(PageWidth, PageHeight)
   minimumInteritemSpacing = 10
}
</code></pre>
<p>问题是元素是卡片,所以 <code>height</code> > <code>width</code>,而我只在横向上为 iPhone 和 iPad 开发,所以我尝试使用<code>UIScreen.mainScreen().bounds</code> 没有成功。我设法为 iPhone 和 iPad 添加了 <code>CollectionViewController</code>:</p>
<pre><code>func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -&gt; CGSize{

retrun CGSizeMake(collectionView.frame.size.width / 2 ,collectionView.frame.size.height/ 2)
}
</code></pre>
<p>我在 <code>return</code> 中交换了 <code>width</code> 和 <code>height</code>,因为该应用程序仅是横向的。这仍然不是最好的解决方案,因为卡片不保持纵横比。那么有没有办法使尺寸适应屏幕保持纵横比?
感谢您的帮助。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可以对单元格应用纵横比约束,使它们本身保持纵横比,然后将另一个约束从单元格应用到 View ,以便它们保持与 View 相关的纵横比。然后,您可以应用相等的宽度/高度约束来通过乘数调整单元格的大小。</p></p>
                                   
                                                <p style="font-size: 20px;">关于swift - 根据屏幕尺寸调整 CollectionView 中项目布局的大小,保持纵横比 ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/38228229/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/38228229/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: swift - 根据屏幕尺寸调整 CollectionView 中项目布局的大小,保持纵横比 [Swift]