我想创建一个简单的应用程序,它将在第一个开始屏幕上包含一个居中的图像,而不是在滑动手势(右,左)更改图像时。
我对此很新,所以这就是我正在寻找的http://idevzilla.com/2010/09/16/uiscrollview-a-really-simple-tutorial/。
这是我在控制器实现中的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];
[myDictionary setObject:@"img1.jpg" forKey:@"http://www.testweb.com"];
[myDictionary setObject:@"img2.jpg" forKey:@"http://www.test2.com"];
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
scroll.pagingEnabled = YES;
NSInteger numberOfViews = [myDictionary count];
for (NSString* key in myDictionary) {
UIImage * image = [UIImage imageNamed:[NSString stringWithFormat:[myDictionary objectForKey:key]]];
CGRect rect = CGRectMake(10.0f, 90.0f, image.size.width, image.size.height);
UIImageView * imageView = [[UIImageView alloc] initWithFrame:rect];
[imageView setImage:image];
CGPoint superCenter = CGPointMake([self.view bounds].size.width / 2.0, [self.view bounds].size.height / 2.0);
[imageView setCenter:superCenter];
self.view.backgroundColor = [UIColor whiteColor];
[scroll addSubview:imageView];
}
scroll.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height);
[self.view addSubview:scroll];
}
我的第一个问题是,我的初始屏幕上显示img2
而不是img1
。第二个问题是当我向右滑动时,我得到白色屏幕并且没有图像。有什么建议我错过了,我可以尝试/阅读等等?
编辑:
我希望以“最轻”的方式做到这一点,不使用花哨的画廊api等。只需在屏幕上显示几个非常小的图像(即200x200像素),我可以来回滑动(应该'太难了。在学习一门新语言时,一切都很难。
答案 0 :(得分:0)
github MWPhotoBrowser上有一个项目允许您输入一组一次查看的图像。然后,您可以使用滑动手势从一个图像滚动到下一个图像。添加功能也很容易,它应该让您很好地理解这是如何完成的。还有Apple PhotoScroller example,它为您提供了如何执行相同操作的直接代码,并且还可以平铺图像。由于您不熟悉iOS,因此您可能需要先查看这两个示例,或者只是将它们用作照片查看器。
答案 1 :(得分:0)
您的问题很可能是因为您为两个图片视图设置了CGRect rect = CGRectMake(10.0f, 90.0f, image.size.width, image.size.height);
。这意味着UIImageView
个对象的两个放置在完全相同的位置(两者都位于滚动视图的x坐标上的10.f处)。当最后添加第二个图像视图时,它覆盖了第一个图像视图,意味着它右侧有空白区域。
为了解决这个问题,你可以试试像......
- (void)viewDidLoad
{
//your setup code
float xPosition = 10.f;
for (NSString* key in myDictionary) {
UIImage * image = [UIImage imageNamed:[NSString stringWithFormat:[myDictionary objectForKey:key]]];
CGRect rect = CGRectMake(xPosition, 90.0f, image.size.width, image.size.height);
xPosition += image.size.width;
//rest of your code...
}
//rest of your code
}
以上意味着第二个视图位于第一个图像的宽度为10 +的x坐标上。请注意,我没有测试我的答案。
答案 2 :(得分:0)
首先将图像放在彼此的顶部。
CGPoint superCenter = CGPointMake([self.view bounds].size.width / 2.0, [self.view bounds].size.height / 2.0);
[imageView setCenter:superCenter];
此处您将两个图像都设置在屏幕中央。第二件事是你使用NSDictionary并循环键。 NSDictionary不是像数组那样的命令。您必须按特定顺序将密钥排序给我们。所以Barjavel做对了,但跳过了将图像设置为中心的事实。试试这个:
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *myArray = [[NSArray alloc] initWithObjects:@"img1.jpg", @:image2.jpg", nil];
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
scroll.pagingEnabled = YES;
NSInteger numberOfViews = [myArray count];
int xPosition = 0;
for (NSString* image in myArray) {
UIImage * image = [UIImage imageNamed:image];
CGRect rect = CGRectMake(xPosition, 90.0f, image.size.width, image.size.height);
UIImageView * imageView = [[UIImageView alloc] initWithFrame:rect];
[imageView setImage:image];
self.view.backgroundColor = [UIColor whiteColor];
[scroll addSubview:imageView];
xPosition += image.size.width;
}
scroll.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height);
[self.view addSubview:scroll];
}