gpt4 book ai didi

ios - 我应该如何在 iPad 上实现自定义网格?

转载 作者:行者123 更新时间:2023-11-29 11:15:47 25 4
gpt4 key购买 nike

我正在设计一款 iPad 应用程序,其中包含自定义网格。网格将以不同的颜色显示包含单个字符的简单几何形状。这些将根据用户操作频繁更新。

网格在两个方向上都将大于屏幕尺寸,因此需要滚动/平移。

我还需要“卡住”顶行和第一列 - 因此顶行保留在顶部,但其中的内容与网格的其余部分一起水平滚动,第一列保留在左侧,但内容与网格的其余部分垂直滚动。

第一列的内容可能很宽,所以我需要允许用户调整它的大小。

我正在努力寻找设计它的最佳方法。我认为当我手动管理所有绘图和交互时,将它作为单个自定义 View 可能是最简单的。但我不禁觉得我错过了一些更简单的方法。也许甚至有一个合适的第三方组件会是一个更好的起点。

设计此应用组件的最佳方式是什么?

最佳答案

我有 3 个 UIScrollView,您可以适本地设置它们的框架,以便它们使第一列和第一行成为您想要的大小 - 主要网格内容可以是右下角的 UIScrollView。

Controller 类可以是所有 View 的 UIScrollViewDelegate。将第一列 UIScrolView 的内容大小设置为与其框架的宽度相同,但高度适合内容的大小,第一行 UIScrollView 的高度应与其框架相同,但内容的宽度合适,左下方的 UIScrollView 会将其内容大小设置为网格内容的大小。

- (void) scrollViewDidScroll:(UIScrollView*)scrollView 方法在滚动其中任何一个时被调用,因此检查哪个已滚动并适本地滚动其他两个。

//Declared and positioned somewhere earlier, like in the .h
UIScrollView* firstCol;
UIScrollView* firstRow;
UIScrollView* mainGrid;

- (void) scrollViewDidScroll:(UIScrollView*)scrollView {
if (scrollView == firstCol) {
CGPoint offset = mainGrid.contentOffset;
offset.y = firstCol.contentOffset.y
[mainGrid setContentOffset:offset];
}
else if (scrollView == firstRow) {
CGPoint offset = mainGrid.contentOffset;
offset.x = firstRow.contentOffset.x
[mainGrid setContentOffset:offset];
}
else if (scrollView == mainGrid) {
CGPoint offset = firstRow.contentOffset;
offset.x = mainGrid.contentOffset.x;
[firstRow setContentOffset:offset];
offset = firstCol.contentOffset;
offset.y = mainGrid.contentOffset.y;
[firstCol setContentOffset:offset];
}
}

关于ios - 我应该如何在 iPad 上实现自定义网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com