使用情节提要在 CollectionView 中仅显示两列和多行

2024-03-15

I want to display only two cells in a row, no matter what the iPhone screen size is. Like, End result required

我的故事板包含一个UICollectionView,通过约束连接。

The storyboard settings for the UICollectionView is, enter image description here

现在,当我在 6、5 秒或更短的时间内运行此命令时,一行中只会出现一个单元格。我使用的代码是,

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    return [categoryImages count];
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    homePageCells *cell = (homePageCells *)[collectionView dequeueReusableCellWithReuseIdentifier:@"cells" forIndexPath:indexPath];
    cell.categoryName.text = [categoryNames objectAtIndex:indexPath.row];

    return cell;
}

我尝试使用代码检测屏幕尺寸并以编程方式分配适当的单元格尺寸,

- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CGSize sizes;


    CGSize result = [[UIScreen mainScreen] bounds].size;
    NSLog(@"%f",result.height);
    if(result.height == 480)
    {
        //Load 3.5 inch xib
        sizes =CGSizeMake(170.f, 170.f);
        NSLog(@"3gs");
    }
    else if(result.height == 568)
    {
        //Load 4 inch xib
        sizes =CGSizeMake(130.f, 130.f);
        NSLog(@"5s");

    }
    else if(result.height == 667.000000)
    {
        //Load 4.7 inch xib
        sizes =CGSizeMake(160.f, 160.f);
        NSLog(@"6");

    }
    else
    {
        NSLog(@"else");

        sizes =CGSizeMake(170.f, 165.f);

    }
    return sizes;
}

但我也知道这不是正确的方法,所以请给我一个正确的方法来处理这个问题。


您不需要检查设备大小,因为我们可以使用collectionViewwidth 来计算单元格的宽度。使用单元格宽度,您可以根据需要计算高度。

还有一件事:你需要使用UICollectionViewDelegateFlowLayout&确认下面的委托&实现方法

  func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

   let padding: CGFloat =  50
   let collectionViewSize = collectionView.frame.size.width - padding

   return CGSizeMake(collectionViewSize/2, collectionViewSize/2)
   
}

更新:斯威夫特4.0

  func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let padding: CGFloat =  50
        let collectionViewSize = collectionView.frame.size.width - padding
        
        return CGSize(width: collectionViewSize/2, height: collectionViewSize/2)
    }

Note:我已经回答了这个问题,考虑到单元格是正方形的

附加信息:请确保您的预估尺寸为空https://i.stack.imgur.com/B9kmU.png https://i.stack.imgur.com/B9kmU.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用情节提要在 CollectionView 中仅显示两列和多行 的相关文章

  • 跨不同的 viewController 使用相同的 UIWebView

    TL DR 我需要实现一个在多个 ViewController 之间共享的单例 UIWebVIew 这个问题包含了我迄今为止的所有方法 应用程序委托 property strong nonatomic UIWebView singleWeb
  • 如何在iOS中根据文本长度更改UILabel宽度?

    我想在 UILabel 旁边显示图像 但是 UILabel 的文本长度可变 所以我不知道将图像放置在哪里 图像应根据标签的大小移动 我怎样才能做到这一点 虽然 Keshav 答案可以工作 但它已被弃用 try NSDictionary at
  • OS X Server 持续集成 ipa 发行版

    我们有一个配置了 SSL 证书并启用了 Xcode 的 osx 服务器 在将 OSX Server 更新到 3 2 1 和 Xcode 6 0 1 之前 一切正常 我们遇到的问题是 当集成完成后 我们单击设备上的安装按钮 它会尝试下载 但会
  • 键盘扩展:是否可以继承 iOS 现有键盘的功能和 UI?

    自定义键盘扩展 https developer apple com library ios documentation General Conceptual ExtensibilityPG Keyboard html是 iOS 8 中的一个
  • Xcode 6 本地化无法读取字符串文件

    Xcode 无法生成 xliff 本地化文件并出现错误本地化无法读取字符串文件 请检查系统日志以获取更多详细信息 有谁知道我在哪里可以找到这些日志 它是 Xcode 6 3 2 GM 但我也尝试过 6 3 1 版本 同 6 3 1 错误发生
  • 在数组中查找距用户位置最近的经度和纬度

    我有一个充满经度和纬度的数组 我的用户位置有两个双变量 我想根据我的阵列测试用户位置之间的距离 看看哪个位置最近 我该怎么做呢 这将得到两个位置之间的距离 但很难理解 我如何针对一系列位置对其进行测试 CLLocation startLoc
  • 一段时间后 NSTimer 停止在后台触发

    嘿 我正在开发一个应用程序 其中我必须每 30 秒调用一次 API 所以我为它创建了 NSTimer 但是当我的应用程序进入后台时 计时器会在 3 4 分钟后停止触发 所以它只能在后台运行 3 4 分钟 但之后就不再运行了 我如何修改我的代
  • 当出现alertController(actionSheet)时inputAccessoryView动画向下

    我有一个用于聊天应用程序的 inputAccessoryView 它始终保持可见并停靠在屏幕底部 用于类似于大多数消息应用程序的文本输入 当我呈现带有actionSheet样式的alertController时 inputAccessory
  • 金属顶点着色器绘制纹理的点

    我想执行 Metal 或 OpenGLES 3 0 着色器 通过混合绘制点基元 为此 我需要将纹理的所有像素坐标作为顶点传递给顶点着色器 该顶点计算要传递给片段着色器的顶点的位置 片段着色器仅输出启用混合的点的颜色 我的问题是 是否有一种有
  • SWRevealViewController 如何删除滑动手势

    我正在使用良好的控制SWRevealViewController 但通过一些重做 我想在屏幕上跟踪我自己的滑动手势 那么如何关闭滑动选项呢 我只想工作revealToggle附加到我的按钮的方法 有人遇到过这个吗 谢谢 为了禁用滑动手势 您
  • 在 (BOOL)webView 中:如何打开在 UIWebView 中单击的 URL 以打开模态 UIWebView

    感谢您查看我的问题 让我先描述一下该应用程序 我有一个适用于 iOS5 1 的基于选项卡栏的应用程序 它使用情节提要和 ARC 有四个选项卡 每个选项卡都有一个视图控制器 显示带有本地 HTML 文件的 Web 视图 每个视图是要显示的一组
  • 使用新数据快速更新 UITableView

    我正在尝试重新填充我的UITableView来自另一个 JSON 调用的数据 然而 我当前的设置似乎不起作用 虽然有很多相同的问题 但我可以找到我已经尝试过的答案 我将 API 数据保存在CoreData实体对象 我用我的 UITableV
  • 使用音频单元录制我的 iPhone 应用程序播放的声音

    我今天有很多有趣的事情iOS 和音频单元并发现了很多有用的资源 包括在内 首先 我对某些事情感到困惑 是否真的有必要创建一个音频图 with 混合器单元录制应用程序播放的声音 或者播放声音就足够了ObjectAL https github
  • iPhone 相机访问权限?

    我想知道如何访问 iPhone 相机并实时使用它 例如 仅在相机视图上绘图 另一个相关问题 可以显示吗同时 4 个摄像机视图就像 Mac 上的 Photo Booth 一样 您可以使用 AVFoundation 来做到这一点 void in
  • UIView 动画取消任何触摸输入?

    我在这里有一个 UIScrollView 当用户滚动到页面时 我在屏幕中间添加显示标签 问题是 当动画进行时 用户无法滚动到下一页 所有用户交互似乎被禁用 直到动画结束 这是我用于显示标签的代码 if scrollView dragging
  • 在 collectionView 单元格上添加边框

    每次用户单击特定单元格时 该单元格都会有边框 问题是当我来回滚动时 边框会选择随机单元格来设置边框 func collectionView collectionView UICollectionView didSelectItemAt in
  • 不使用 renderInContext 捕获 UIView:

    我想从我的屏幕创建视频 为此我将捕获视图 但我不想使用renderInContext 由于某种原因 我现在正在使用drawViewHierarchyInRect 但这仅限于 iOS 7 我的应用程序也支持早期的 iO S 版本 我会因使用而
  • BLE:使用 Android / iOS 读取长特征值

    对于正常的特征读取 仅读取 MTU 大小 20 字节 的数据 我的客户将提供更大尺寸 超过 100 字节 的特征 我看到 BLE 提供了 长读取 功能 可以读取直到达到特征的大小 https bluegiga zendesk com ent
  • 如何在WebView中隐藏滚动条?

    我切换到WKWebView因为UIWeb视图Apple 不再建议使用 使用以下代码从 WebView 中的容器加载 HTML 文件 let webview myWKWebViewClass webview for Bundle main f
  • 防止来自“PerformSelect 可能导致泄漏,因为其选择器未知”的警告[重复]

    这个问题在这里已经有答案了 可能的重复 PerformSelector 可能会导致泄漏 因为它的选择器未知 https stackoverflow com questions 7017281 performselector may caus

随机推荐