2ND UPDATE
由此线程提供 In iOS6, XCode 4.5, UIScrollView is not Scrolling, despite contentSize being set
答案已经提供!关闭故事板上的自动布局(整个过程)将修复ScrollView并允许正确滚动。传播人们这个词!
UPDATE 添加了代码。严重无法弄清楚为什么这不适用于iPad。
.h文件
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@end
.m文件
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.scrollView.contentSize = CGSize(768, 1600);
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
再次只是为了澄清我正在使用故事板,我首先在ScrollView中拖动,将大小设置为标准iPad屏幕(768x1004,因为我在顶部有一个导航栏),然后在其上添加我的图像,设置它的大小(768x1600)。然后我将这两个连接到头文件(如上所示),但仍然无法让图像滚动。我的视图模式设置为“Aspect Fit”,这可能是问题吗?我尝试过其他设置而没有运气,但不是全部。
任何具体的建议都会非常感激!
原始邮寄
我知道有很多关于这个的主题,但是我有一只狗试图让ScrollView工作。我正在尝试加载768x1600的图像(仅限iPad屏幕),因此您必须垂直滚动才能看到图像的更多内容。要创建ScrollView,我使用Storyboard并将ScrollView拖到ViewController框架中,对齐它并确保启用交互。然后,在ScrollView(也在Storyboard)的顶部,我添加了我想要使用的UIImage(确保它是一个子视图)并相应地调整它的大小,然后也启用了交互。
无论我怎么努力,我都无法在Simulator或我的设备上使用它。我已经确保我的ScrollView被设置为IB中的委托,它在头文件上有一个IBOutlet,并且被合成并加载到我的实现文件中。我还确保我已经设置了contentSize;
self.scrollView.contentSize = CGSizeMake(768, 1600);
我还尝试通过代码将UIImage添加为子视图(而不是在故事板上),当我这样做时,运行模拟器时图像不会出现。除此之外,当我点击页面时,没有可用的滚动选项。
非常感谢任何人都可以给我这个帮助。如果需要代码,我会发布。
答案 0 :(得分:2)
我想我只是想通了。你说你在滚动视图的上点了UIImageView 。
UIImageView不是用户可互动的!
尝试在Interface Builder中选择图像视图,并为图像视图设置“启用用户交互”为“是”。
如果这不起作用,我建议在代码中添加图像视图(首先从IB中删除):
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"someImage.png"]];
self.imageView.frame = CGRectMake(0,0,768,1600);
self.imageView.userInteractionEnable = YES;
[self.scrollView addSubview:self.imageView];
self.scrollView.contentSize = CGSizeMake(768, 1600);
self.scrollView.frame = self.view.bounds;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end