【发布时间】:2016-02-10 10:05:00
【问题描述】:
我必须这样设计屏幕。基本类别包含 4 项,然后厨房类别包含 8 项,然后实用类别包含 11 项。如何实现可重用性?
这是我尝试过的我的代码:
- (void)buildAppliancesView
{
for (int i=0; i<5; i++)
{
[self addAppliancesCategoriesLabel:i];
[self addApplianceCategoryView:i];
[self addIndividualAppliances:i];
}
}
- (void)addAppliancesCategoriesLabel:(int)y
{
label = [[UILabel alloc] initWithFrame:CGRectMake(0,(_appliancesHeaderLabel.frame.origin.y+_appliancesHeaderLabel.frame.size.height)+y*150+10, 0, 0)];
NSLog(@"y=>%f",label.frame.origin.y);
label.text =[NSString stringWithFormat:@"%@",[APPLIANCESCATEGORIESLABEL_ARRAY objectAtIndex:y]];
[label sizeToFit];
[_scrollView addSubview:label];
}
- (void)addApplianceCategoryView:(int)y
{
applianceCategoryView = [[UIView alloc]initWithFrame:CGRectMake(5, label.frame.origin.y+label.frame.size.height+5, self.view.frame.size.width-10, 70)];
[applianceCategoryView setBackgroundColor:[UIColor grayColor]];
[_scrollView addSubview:applianceCategoryView];
}
- (void)addIndividualAppliances:(int)y
{
for (int i=0; i<4; i++)
{
UIView *applianceView = [[UIView alloc]initWithFrame:CGRectMake(5+((self.view.frame.size.width/4)+5)*y, _appliancesHeaderLabel.frame.origin.y+_appliancesHeaderLabel.frame.size.height+label.frame.size.height+10, 50, 50)];
NSLog(@"xVAlue==>>%f",applianceView.frame.origin.x);
[applianceView setBackgroundColor:[UIColor redColor]];
UITapGestureRecognizer *singleTap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(changecolor)];
[applianceView addGestureRecognizer:singleTap];
[applianceCategoryView addSubview:applianceView];
}
}
【问题讨论】:
-
在评论任何需要知道该屏幕工作的内容之前,如果是,所有项目是否都可以滚动,然后朝哪个方向滚动?整个项目将滚动或仅特定?意味着如果用户滚动厨房项目,只有那些项目会滚动?
-
@VijayPalwe 没有。所有项目都必须从上到下滚动。我的问题是,如何运行 forloop 4 次、8 次和 11 次。还有如何为 $ 项目和厨房视图增加 8 个项目的基本尺寸。
-
好的,使用滚动视图,全局获取x和y,不要创建单独的uiview,创建一个函数,在其中编写代码来创建uilable -(void)createLableForPosition:(int)xpos andYposition:(int)yPosition和另一个函数在其中写入一个 for 循环 -(void)createItems:(int)numberOfItem { for() }
-
所以现在您可以将它用于每个类别及其项目,并使用总高度作为该滚动视图的内容大小
-
你为什么要复制
UICollectionView?只需创建一个数据模型,其中Essentials和Kitchen是以项目为行的部分。然后使用UICollectionViewController构建您的场景。
标签: ios objective-c view