0

是否可以在 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;
}
4

2 回答 2

0

我按原样粘贴了您的代码,并且也可以看到滚动。
您似乎已将代码粘贴
- (id)initWithFrame:(CGRect)frame
到自定义视图上。
你为你的观点提供的框架是什么?

于 2013-07-24T07:32:16.563 回答
-1

我认为的问题是内容大小没有正确定义

[scrollView setContentSize:CGSizeMake(630,0)];

给出宽度为 630,高度为 0 表示您尝试实现水平滚动。尝试一些更大的内容大小并尝试滚动代码看起来不错

我用scrollview尝试了一个uiview,效果很好

@implementation TestView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        [self setBackgroundColor:[UIColor yellowColor]];
        UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 35, 600, 600)];
        [scrollView setScrollEnabled:YES];
        scrollView.pagingEnabled = YES;
        scrollView.backgroundColor = [UIColor blueColor];
        [scrollView setShowsHorizontalScrollIndicator:YES];
        [scrollView setIndicatorStyle:UIScrollViewIndicatorStyleDefault]; scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        scrollView.contentMode = UIViewContentModeScaleToFill;
        [scrollView setContentSize:CGSizeMake(630,0)];

        [self addSubview:scrollView];



    }
    return self;
}

添加到VC作为

TestView *view=[[TestView alloc]initWithFrame:CGRectMake(20, 30, 500, 600)];

[self.view addSubview:view];
于 2013-07-24T07:16:37.603 回答