【发布时间】:2013-07-24 07:02:33
【问题描述】:
是否可以在 UIView 中使用 UIScrollView 而不是 UIViewController?
我尝试在 UIView 中使用,但这不起作用。我找不到适合我的项目的示例。
我需要在大小为 90x90 像素的视图上水平滚动。
这是我的代码
UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 35, 400, 200)];
[scrollView setScrollEnabled:YES];
scrollView.pagingEnabled = YES;
[scrollView setDelegate:self];
scrollView.backgroundColor = [UIColor brownColor];
[scrollView setShowsHorizontalScrollIndicator:YES];
[scrollView setIndicatorStyle:UIScrollViewIndicatorStyleDefault]; scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
scrollView.contentMode = UIViewContentModeScaleToFill;
[scrollView setContentSize:CGSizeMake(630,0)];
[self addSubview:scrollView];
//self.frame = CGRectMake(0, 0, 1024, 768);
[self setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.8]];
circleView = [[UIView alloc] initWithFrame:CGRectMake(100,100,90,90)];
circleView.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:1];
//circleView.layer.borderColor = [[UIColor blackColor] CGColor];
//circleView.layer.borderWidth = 4;
UILabel* circleIndex = [[UILabel alloc] init];
circleIndex.frame = CGRectMake(30, 25, 40, 40);
[circleIndex setFont:[UIFont fontWithName:@"Arial-BoldMT" size:40]];
[circleIndex setText:@"A"];
[circleView addSubview:circleIndex];
circleView2 = [[UIView alloc] initWithFrame:CGRectMake(100+100,100,90,90)];
circleView2.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:1];
circleView3 = [[UIView alloc] initWithFrame:CGRectMake(100+100+100,100,90,90)];
circleView3.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:1];
circleView4 = [[UIView alloc] initWithFrame:CGRectMake(100+100+100+100,100,90,90)];
circleView4.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:1];
circleView5 = [[UIView alloc] initWithFrame:CGRectMake(100+100+100+100+100,100,90,90)];
circleView5.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:1];
circleView6 = [[UIView alloc] initWithFrame:CGRectMake(100+100+100+100+100+100,100,90,90)];
circleView6.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:1];
[scrollView addSubview:circleView];
[scrollView addSubview:circleView2];
[scrollView addSubview:circleView3];
[scrollView addSubview:circleView4];
[scrollView addSubview:circleView5];
[scrollView addSubview:circleView6];
exitView = [[UIView alloc] initWithFrame:CGRectMake(70,-5,30,30)];
exitView.layer.cornerRadius = 15;
exitView.backgroundColor = [UIColor redColor];
exitView.layer.borderColor = [[UIColor whiteColor] CGColor];
exitView.layer.borderWidth = 2;
[circleView addSubview:exitView];
UIView *exitLabel = [[UIView alloc] initWithFrame:CGRectMake(8,13,15,3)];
exitLabel.backgroundColor = [UIColor clearColor];
exitLabel.layer.borderColor = [[UIColor whiteColor] CGColor];
exitLabel.layer.borderWidth = 2;
[exitView addSubview:exitLabel];
UILongPressGestureRecognizer *longPress =
[[UILongPressGestureRecognizer alloc] initWithTarget:self
action:@selector(handleLongPress:)];
[circleView addGestureRecognizer:longPress];
UITapGestureRecognizer *singlePress =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleSinglePress:)];
[exitView addGestureRecognizer:singlePress];
//[longPress release];
UITapGestureRecognizer *singlePress2 =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(singlePress:)];
[circleView2 addGestureRecognizer:singlePress2];
[exitView setHidden:YES];
[circleView bringSubviewToFront:exitView];
[exitView setUserInteractionEnabled:YES];
}
return self;
}
【问题讨论】:
-
是的,这是可能的。请分享您的代码。
-
请分享您的代码。
-
UIScrollView是UIView的子类。任何 UIView 实例都可以是任何其他 UIView 的子视图。 -
我已经添加了我的代码,我无法看到滚动效果
-
为什么你的 contentSize 的高度为 0?
标签: ios objective-c uiview uiviewcontroller uiscrollview