gpt4 book ai didi

ios - 如何将静态元素添加到 UICollectionViewController 或使它们与其共享同一屏幕

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:16 24 4
gpt4 key购买 nike

我想完成的事情:

我正在设计一个简单游戏的主屏幕。在屏幕的下半部分,我希望它包含一个 Collection View ,显示一个可供选择的级别列表(长列表,可水平滚动,没什么特别的 - 所以它可以由标准流布局处理)。在屏幕的上半部分,我想有一堆静态的、不可滚动的元素,比如图像或带有游戏标题的标签、一个通往致谢名单页面的静态按钮、一个用于输入用户名的文本字段等。

问题:

由于此设计的重点似乎集中在 Collection View 上,因此我尝试在 Storyboard中使用 UICollectionViewController 来处理此问题。但是,当我将 UICollectionViewController 拖到 Storyboard中时,它似乎总是占据全屏。我找不到缩小它的方法,也找不到将任何按钮或标签拖放到它上面的方法。

问题:

如何实现上述设计( Collection View 只占据屏幕的一部分,另一部分被一些静态的、不可滚动的控件占据)?

我应该:

  1. 在流布局的页眉或页 footer 分提供静态按钮? (但我必须让它们“粘”起来,这样它们就不会随着其他内容滚动
  2. 继承流布局并将静态按钮实现为布局的装饰 View
  3. 创建包含两个部分的自定义容器 Controller ,一个使用 UICollectionViewController,第二个使用带有一堆静态按钮的普通 View Controller
  4. 不要使用 UICollectionViewController,而是使用普通的 UIViewController 并“手动”处理集合数据源和委托(delegate)(这似乎有很多不必要的工作)
  5. 也许我只是错过了一些在 XCode 的 IB 中通过 UICollectionViewController 拖放按钮的简单方法(或配置)
  6. 还有其他方法吗?

请注意: 1. 我是 iOS 新手,可能会错过一些非常明显的解决方案 2. 除了共享同一个屏幕外,我的所有组件都非常标准,我的 Collection View 或按钮不需要任何自定义布局或行为 - 所以我想知道最干净和最简单的方法是什么(我上面提出的一些潜在解决方案似乎可行,但对我来说,实现这样一个简单的屏幕听起来有点矫枉过正)

最佳答案

我想你需要下图这样的东西
enter image description here

底部 View (缩略图 View )是使用UICollectionViewController 创建的UICollectionView

我做的是

  1. 创建了一个UICollectionViewController 子类并将其 View (即collectionView)添加为mainViewController 的 subview 。
  2. CollectionView 由其 Controller 类管理。我将它命名为 SlideViewController

SlideViewController.h

 #import <UIKit/UIKit.h>

@interface SlideViewController : UICollectionViewController

@end

SlideViewController.m

 #import "SlideViewController.h"
#import "CollectionViewCell.h"


@implementation SlideViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}

-(id)init
{
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
self = [super initWithCollectionViewLayout:layout];
if (self) {
layout.itemSize = CGSizeMake(100, 100);
layout.sectionInset = UIEdgeInsetsMake(5, 10, 5, 10);
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
self.view = self.collectionView;
//self.collectionView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
self.collectionView.backgroundColor = [UIColor orangeColor];
[self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:@"cell"];

}

如何使用

在主视图 Controller 中

 self.slideViewController= [[[SlideViewController alloc]init]autorelease];
self.slideViewController.view.frame = CGRectMake(20, 300, 280, 200);
[self.view addSubview:self.slideViewController.collectionView];

关于ios - 如何将静态元素添加到 UICollectionViewController 或使它们与其共享同一屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16231019/

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