是否可以在UIView中使用UIScrollView而不是在UIViewController中?

时间:2013-07-24 07:02:34

标签: ios objective-c uiview uiviewcontroller uiscrollview

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

2 个答案:

答案 0 :(得分:0)

我按原样粘贴你的代码,我也能看到滚动。
你似乎把你的代码贴在了上面 - (id)initWithFrame:(CGRect)frame
自定义视图。
 您对视图的框架是什么?

答案 1 :(得分:-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];