子类化 UICollectionViewLayout 并分配给 UICollectionView

2024-01-12

我有一个 UICollectionViewController

- (void)viewDidLoad 
{
   [super viewDidLoad];    
   // assign layout (subclassed below)
   self.collectionView.collectionViewLayout = [[CustomCollectionLayout alloc] init];
}

// data source is working, here's what matters:
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
   ThumbCell *cell = (ThumbCell *)[cv dequeueReusableCellWithReuseIdentifier:@"ThumbCell" forIndexPath:indexPath];

   return cell;
}

我还有一个 UICollectionViewLayout 子类:CustomCollectionLayout.m

#pragma mark - Overriden methods
- (CGSize)collectionViewContentSize
{
    return CGSizeMake(320, 480);
}

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
    return [[super layoutAttributesForElementsInRect:rect] mutableCopy];
}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
{
    // configure CellAttributes
    cellAttributes = [super layoutAttributesForItemAtIndexPath:indexPath];

    // random position
    int xRand = arc4random() % 320;
    int yRand = arc4random() % 460;
    cellAttributes.frame = CGRectMake(xRand, yRand, 150, 170);

    return cellAttributes;
}

我正在尝试为单元格使用一个新框架,只是在随机位置使用一个框架。 问题是没有调用layoutAttributesForItemAtIndexPath。

预先感谢您的任何建议。


Edit:我没有注意到你已经解决了你的案子,但我遇到了同样的问题,这对我的案子有帮助。我把它留在这里,鉴于这个主题还没有太多内容,它可能对某人有用。

绘图后,UICollectionView不调用该方法layoutAttributesForItemAtIndexPath: but layoutAttributesForElementsInRect:以确定哪些单元格应该可见。您有责任实现此方法并从那里调用layoutAttributesForItemAtIndexPath:为所有可见的索引路径确定确切的位置。

换句话说,将其添加到您的布局中:

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
    NSMutableArray * array = [NSMutableArray arrayWithCapacity:16];
    // Determine visible index paths
    for(???) {
        [array addObject:[self layoutAttributesForItemAtIndexPath:[NSIndexPath indexPathForItem:??? inSection:???]]];
    }
    return [array copy];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

子类化 UICollectionViewLayout 并分配给 UICollectionView 的相关文章

  • 两者都实现了类。将使用两者之一

    我有一个项目 它具有使用 SocketRocket 的依赖项 通过 CocoaPods 安装 并从 HeapAnalytics 导入了静态库 显然 HeapAnalytics 库已经使用了 SocketRocket 编译时没有出现错误 但在
  • 如何在 ios 7 上更改重新排序控制图像

    我正在寻找一种更改重新排序控件图像和大小的方法 我使用此代码来更改重新排序图像 void tableView UITableView tableView willDisplayCell UITableViewCell cell forRow
  • “同时创建 xib 文件”按钮已禁用

    我在创建时遇到这个问题UIView s子类 创建 例如 UIViewControllers or UITableViewCells没关系 为什么会出现这种情况 I create view using cmd N and Xcode Vers
  • -[EAGLContext renderbufferStorage:fromDrawable:] 第二次失败?

    我正在开发一个 iOS openGL ES 应用程序 我正在做通常的 EAGLView ES2Render 的事情 启动时 使用以下代码成功创建 frambuffer BOOL createFramebuffers EAGLContext
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项
  • 由于语言错误,Itunes Connect 无法提交

    Thats all it shows https i stack imgur com 0aZm8 png 我不确定它没有告诉我出了什么问题 it shows its linked to the language https i stack
  • 自动布局、UIDynamics 和动画

    我对自动布局还很陌生 并且对如何为视图设置动画感到困惑 我读了很多 我知道你必须遵守限制 编辑它 然后包装layoutIfNeeded in an UIView动画块 但当真正要做的时候 我却有点失落 我很乐意有人能向我解释如何做这个动画
  • UITextFieldDelegate 与 UITextField 控件事件

    如果我想处理 UITextField 的更改 例如用户在其中键入 看起来这可以通过将委托分配给该文本字段 然后让委托实现 shouldChangeCharactersInRange 来完成 或者通过将目标添加到文本字段并处理 UIContr
  • ITMS-90535 无法使用最新的 Google Signin SDK 发布 iOS 应用程序

    我正在使用 xcode 7 GM 种子并通过 cocoapods 安装了最新的 Google Signin SDKpod Google SignIn 当我尝试将我的应用程序发布到苹果应用程序商店时 我收到附加错误 Help 以下是 Goog
  • UISearchController 保留问题

    我正在尝试使用 UISearchController 但是我遇到了无法解决的保留问题 MainTableview 有两个部分 第1节 基于某些正则表达式过滤数据 第2节 All Data 我将 UISearchController 添加到我
  • iPhone 快照,包括键盘

    我正在寻找拍摄整个 iPhone 屏幕 包括键盘 的正确方法 我找到了一些截取屏幕的代码 CGRect screenCaptureRect UIScreen mainScreen bounds UIView viewWhereYouWant
  • 如何将音乐从我的应用程序切换到 iPod

    我在用MusicPlayerController我的应用程序中的对象来播放音乐 我知道当 iPhone ipod 应用程序终止时 可以继续播放我的应用程序音乐 我该怎么做 这涉及到一些事情 您必须在两种音乐播放器之间进行选择 应用程序音乐播
  • 对使用phonegap和钛的质疑[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 最近我听说了 PhoneGap 和 Titanium 移动网络应用程序的开发 我分析了这两个 Web 应用程序 并了解了如何使用它们以
  • NSPredicate 的 onFormat 字符串

    我想用 id 键对数据进行排序 我如何理解格式字符串的用途NSPredicate格式 我有一个100号的帖子 我的代码 let objectIDs posts map 0 id let predicate NSPredicate forma
  • 在 iOS 上从 GPS 获取时间

    我正在开发一个跟踪器应用程序 该应用程序需要高精度地了解设备位置 即它使用位置服务并忽略水平精度低于 20 米的位置 CLLocation没有明确声明是否通过 GPS 确定 但是 如果水平精度为 20 米或更好 则可以认为它是来自 GPS
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self
  • 显示键盘时如何在 TextView 下方添加更多填充

    当我在 ScrollView 中有 TextField 并点击它时 键盘会按预期显示 但似乎 TextField 已向上移动到足以显示输入区域 但我希望移动到足够的位置 以便整体可见 否则它看起来像是被剪裁了的 我找不到改变这种行为的方法
  • ActionScript、NetStream.Play.Failed iOS AIR 移动设备

    我正在尝试以类似于 Tiberiu Ionu Stan http stackoverflow com questions 2036107 aac mp4 not working in actionscript 3s netstream 的方
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值

随机推荐

  • RabbitMQ 等待多个队列完成

    好的 这里是正在发生的事情的概述 M lt Message with unique id of 1234 Start Queue lt Exchange lt bind to multiple queues Q1 Q2 Q3 lt star
  • 使用 JSTL 的 c:foreach 将列表值从 servlet 打印到 JSP

    这是我想要发送列表中存在的值的 servlet public class SearchServlet extends HttpServlet private static final long serialVersionUID 1L pub
  • spring注解可以访问方法参数吗?

    考虑一个UrlValidator方法注释 在调用方法之前测试给定的 url 是否有效 Target ElementType METHOD Retention RetentionPolicy RUNTIME public interface
  • Python 多处理内存使用

    我写了一个程序 可以总结如下 def loadHugeData load it return data def processHugeData data res queue for item in data process it res q
  • 如何 pip 安装 Twisted 而不出现错误?

    我正在尝试使用 Pip 在 Windows 10 上安装 Twisted 我知道还有很多关于安装 Twisted 的其他问题 但没有一个与我的错误相符 当我跑步时pip install Twisted 我收到以下错误 ERROR Comma
  • 如何在 iPhone 应用程序上仅支持纵向模式

    我正在开发的 iPhone 应用程序遇到一个奇怪的问题 我希望我的应用程序支持ONLY肖像模式 但由于某种原因我无法做到这一点 设备和模拟器 为了仅支持纵向模式 我做了如下操作 在 Xcode 的 TARGET 摘要部分中 我仅选择了纵向
  • 为情节图形的每个方面添加痕迹

    我想在情节的各个方面添加痕迹 例如 我想向显示 15 小费的 tips 数据集散点图的每个每日方面添加一条参考线 然而 我下面的尝试仅将线添加到第一个方面 import plotly express as px import plotly
  • laravel Socialite 无法在实时服务器上运行,只能在本地计算机上运行

    我最近将我的应用程序移至实时服务器中 问题是 Laravel Socialite 停止工作 解释如下 我点击谷歌登录并选择电子邮件后 回调时会发生这种情况 InvalidStateException on Abstract php on l
  • 有哪些工具可用于编辑联机帮助页,即 GUI WYSIWYG 编辑器(任何平台)

    是否有任何像样的 GUI 图形用户界面 所见即所得 所见即所得 编辑器 在任何平台上 可用于创作 编辑手册页 一个可以导出为 troff 格式的应用程序也可以 Nroff编辑 http aaa sec com nroffedit 最初是为了
  • 刀片模板和单选按钮 - 在 foreach 循环中选择第一个

    我有以下 Blade 模板条目 它创建 作为表行的一部分 一列单选按钮 我只想选择生成的第一个无线电 并且我想通过 PHP 来执行此操作 没有 js post 页面加载 如何检查这是否是我的集合中的 第一个 条目 从而放置字符串checke
  • 结束 Swing 应用程序时出现 JavaFX 错误

    我有一个 Swing 应用程序 需要在其中显示内部生成的 HTML CSS 为了做到这一点 我已经适应了来自这个 StackOverflow 问题的代码 https stackoverflow com questions 13717769
  • 如何合并动物园对象列表

    我有一个动物园对象列表 我想合并它们 我已经确保它们的长度都相同 看来为了合并它们 我需要做类似的事情 merge my list 1 my list 2 但随着列表长度的增加 这很快就会变得很麻烦 有人对处理这个问题有建议吗 Use do
  • Android SpeechRecognizer设置识别引擎?

    我正在使用 SpeechRecognizer 将语音转换为文本 我使用的是三星 当我将语音识别器设置为 Samsungpowered by Vlingo 时遇到错误 在更改为 Google 后错误消失了 我想知道是否有任何方法可以以编程方式
  • Docker:导出镜像失败:创建镜像失败:获取层失败

    我收到以下错误 导出图像失败 创建图像失败 获取图层失败 sha256 xxxxxxxxxxxxx 层不存在 Dockerfile FROM openjdk 8 COPY lib usr src app BOOT INF lib COPY
  • 在 C# vsto Excel 中选择性粘贴

    我正在开发 C vsto Excel 应用程序 每当用户从另一个 Excel 工作表将某些内容粘贴到 Excel 模板中时 它还会将单元格格式与单元格数据一起粘贴到 Excel 模板中 我想避免这种情况 所以我用谷歌搜索 发现了术语 特殊粘
  • 将元素存储在内存中以防止过于频繁地更新 DOM?

    目前我有一个循环在每次迭代中更新 DOM 我知道这是一种不好的做法 您应该尽可能少地更新 DOM 以提高速度 所以我想知道如何编辑下面的内容 以便我可以将所有元素存储在一个元素或其他元素中 然后在循环结束后执行单个 DOM 添加 这是循环
  • 文本不会被 swift UI 包裹

    即使设置后 lineLimit nil 文本不会被换行 var body some View VStack alignment center Text SwiftUI is a modern way to declare user inte
  • 如何设置自定义单元格的角半径

    这是我的示例输出 其中下面的详细信息中有三个单元格 我为每个自定义单元格设置了角半径 但它无法正常工作 第一个单元格的角半径不起作用 第二个单元格的右上角和顶部左边正在工作 请说明为此做什么 void layoutSubviews supe
  • 临时变量的 C++ 生命周期 - 这安全吗?

    如果我正确理解临时对象生命周期的规则 那么这段代码应该是安全的 因为临时对象的生命周期stringstream in make string 持续到完整表达式结束 我不是 100 确信这里没有一个微妙的问题 但有人可以确认这种使用模式是否安
  • 子类化 UICollectionViewLayout 并分配给 UICollectionView

    我有一个 UICollectionViewController void viewDidLoad super viewDidLoad assign layout subclassed below self collectionView co