在UIScrollView中滚动视图

时间:2013-10-18 05:13:28

标签: ios objective-c uiscrollview

我有一个滚动条,我希望能够在视图之间滚动,例如像这样的简单图像视图。我把它们放在这里:

    UIImageView *settingsView = [[UIImageView alloc] init];
    [settingsView setImage:[UIImage imageNamed:@"1.jpg"]];

    UIImageView *cameraView = [[UIImageView alloc] init];
    [cameraView setImage:[UIImage imageNamed:@"2.jpg"]];

接下来我想拍摄那些ImageView并将它们放入我的ScrollView数组中。我尝试这样做:

int PageCount = 2;
NSMutableArray *arrImageName =[[NSMutableArray alloc]initWithObjects:settingsView,cameraView,nil];
UIScrollView *scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
scroller.scrollEnabled=YES;
scroller.backgroundColor = [UIColor clearColor];
[scroller setShowsHorizontalScrollIndicator:NO];
scroller.pagingEnabled = YES;
scroller.bounces = NO;
scroller.delegate = self;
[self.view addSubview:scroller];
int width=scroller.frame.size.width;
int xPos=0;
for (int i=0; i<PageCount; i++)
{
    UIImageView *ImgView = [[UIImageView alloc]initWithFrame:CGRectMake(xPos, 0, scroller.frame.size.width, scroller.frame.size.height)];
    [ImgView setImage:[UIImage imageNamed:[arrImageName objectAtIndex:i]]];
    [scroller addSubview:ImgView];
    scroller.contentSize = CGSizeMake(width, 0);
    width +=scroller.frame.size.width;
    xPos  +=scroller.frame.size.width;
}

我得到的错误是'NSInvalidArgumentException', reason: '-[UIImageView stringByDeletingPathExtension]: unrecognized selector sent to instance

如何将这些View放在滚动条内?谢谢!

5 个答案:

答案 0 :(得分:0)

NSMutableArray *arrImageName =[[NSMutableArray alloc]initWithObjects:settingsView,cameraView,nil];

应该是

NSMutableArray *arrImageName =[[NSMutableArray alloc]initWithObjects:@:"1.jpg", @"2.jpg",nil];

您正在将UIImageView个对象传递到应该NSString

的内容中

答案 1 :(得分:0)

arrImageName已准备好imageViews

所以这一行错了

[ImgView setImage:[UIImage imageNamed:[arrImageName objectAtIndex:i]]];

您只需将imageviews添加到scrollview

for (int i=0; i<PageCount; i++)
{
    [scroller addSubview:[arrImageName objectAtIndex:i]];
    scroller.contentSize = CGSizeMake(width, 0);
    width +=scroller.frame.size.width;
    xPos  +=scroller.frame.size.width;
}

并考虑将帧设置为imageViews。

希望这会对您有所帮助。

答案 2 :(得分:0)

问题是您将UIImageView传递给imageNamed而不是NSString

这一行:

[ImgView setImage:[UIImage imageNamed:[arrImageName objectAtIndex:i]]];

应该是:

UIImageView *imageView = [arrImageName objectAtIndex:i];
[ImgView setImage:imageView.image];

答案 3 :(得分:0)

int PageCount = 2;
NSMutableArray *arrImageName =[[NSMutableArray alloc]initWithObjects:settingsView,cameraView,nil];
UIScrollView *scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
scroller.scrollEnabled=YES;
scroller.backgroundColor = [UIColor clearColor];
[scroller setShowsHorizontalScrollIndicator:NO];
scroller.pagingEnabled = YES;
scroller.bounces = NO;
scroller.delegate = self;
[self.view addSubview:scroller];
int width=scroller.frame.size.width;
int xPos=0;
for (int i=0; i<PageCount; i++)
{
    UIImageView *ImgView = [arrImageName objectAtIndex:i];
    [ImgView setFrame:CGRectMake(xPos, 0, scroller.frame.size.width,  scroller.frame.size.height)];

    [scroller addSubview:ImgView];
    scroller.contentSize = CGSizeMake(width, 0);
    width +=scroller.frame.size.width;
    xPos  +=scroller.frame.size.width;
}

答案 4 :(得分:0)

for (int i=0; i<PageCount; i++)
{
UIImageView *ImgView = [[UIImageView alloc]init];
ImgView =[arrImageName objectAtIndex:i];
[ImgViewSetFrame:CGRectMake(xPos, 0,   scroller.frame.size.width, scroller.frame.size.height)]
[scroller addSubview:ImgView];
scroller.contentSize = CGSizeMake(width, 0);
width +=scroller.frame.size.width;
xPos  +=scroller.frame.size.width;
}