在 iphone 中使用 UIScrollView 滚动图像

Posted

技术标签:

【中文标题】在 iphone 中使用 UIScrollView 滚动图像【英文标题】:Scrolling of images using UIScrollView in iphone 【发布时间】:2012-10-24 07:16:17 【问题描述】:

我是 iphone 开发的新手,我正在做一个简单的应用程序来练习。在该应用程序中,只有一个视图上有图像。我希望能够向左或向右滑动,让第一个图像离开视图,第二个图像进入。图像是不同的,我希望它看起来像它们是连接的。我需要它能够在一系列滑动后更改图像或重新启动。我只使用 ScrollView 执行此操作。

我尝试了一些东西:

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIScrollViewDelegate>

    UIImageView *imgView;
    UIScrollView *scrollView;


@property (nonatomic,retain)IBOutlet UIImageView *imgView;
@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;

//- (id)initWithPageNumber:(int)page;
- (IBAction)changePage:(id)sender;

@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize imgView,scrollView;

- (void)viewDidLoad

    [super viewDidLoad];



- (void)didReceiveMemoryWarning

    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.

/*
- (id)initWithPageNumber:(int)page
    if (self = [super initWithNibName:@"MyView" bundle:nil])
    
        pageNumber = page;
    
    return self;

*/



- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollview

    scrollView.contentOffset = CGPointMake(scrollview.bounds.size.width, 0);


- (IBAction)changePage:(id)sender


    NSArray *images = [[NSArray alloc] initWithObjects:@"1.jpeg",@"2.jpeg",@"3.jpeg", nil];
    scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:scrollView];
    CGRect cRect = scrollView.bounds;

    for (int i = 0; i < images.count; i++)
        imgView = [images objectAtIndex:i];
        imgView.frame = cRect;
        [scrollView addSubview:imgView];
        cRect.origin.x += cRect.size.width;
    

    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * images.count, scrollView.bounds.size.height);
    scrollView.contentOffset = CGPointMake(scrollView.bounds.size.width, 0);



@end

当我运行应用程序时,我仍然无法在图像上滑动。难道我做错了什么?在这方面需要一些指导。谢谢..

【问题讨论】:

您对 XIB 文件做了哪些更改? 【参考方案1】:

此错误表明您在 Interface Builder 中有一个与 IBOutlet 的连接,该连接在您的视图控制器类中不存在。

确保您的 IBOutlets 名称正确,并且您已删除 IB 中所有过时的连接。

【讨论】:

做到了.. 但我仍然无法浏览图像。我还在犯错吗? 但它修复了崩溃对吗? “无法浏览图像”太含糊,无法提供任何帮助。也许你应该接受这个答案并开始一个新问题。 你能帮我一个忙吗?看看我的代码,看看我在做什么错误? 我不明白你在 changePage 中做什么。为什么要分配新的滚动视图?为什么要重新启动您的图像阵列?您应该在viewDidLoad 中执行所有这些操作,即在滚动视图中布置图像。将滚动视图的pagingEnabled 设置为YES,它应该会自动工作,无论是否使用UIPageControl。 如何在滚动视图中排列图像? scrollView.pageEnabled = YES;去?在 changePage 中?【参考方案2】:

scrollView.ContentSize = (scrollView.frame.size.width * images.count

,scrollView.frame.size.height)

剪掉后执行此操作会滑动

【讨论】:

循环后 for (int i = 0; i 还是不行……怎么办? 从代码中删除没有必要的内容偏移线。如果发生这种情况,请接受我的回答,谢谢 没有没有工作..我无法将我的 changePage 功能连接到任何滚动视图... 表示调用没有在 changePagefunction 上进行。

以上是关于在 iphone 中使用 UIScrollView 滚动图像的主要内容,如果未能解决你的问题,请参考以下文章

在 iphone 中使用 UIScrollView 滚动图像(第 2 部分)

如何使用主 iPhone 视图之外的 UI 元素在 Interface Builder 中设置 UIScrollView?

如何在 Iphone 中单击 UIButton 时设置 UiScrollView Frame?

如何在 iPhone SDK 中使用 Objective C 实现 UIViewAutoresizingFlexibleHeight 到 UIScrollView?

iPhone:在嵌入式 UITextView 中输入文本时滚动 UIScrollview

UITableView 内的 UIScrollView 无法正确显示/隐藏(Xcode iPhone)