iOS - UIScrollView不工作(它根本不滚动 - 图像保持固定)

23 iphone uiscrollview uiimageview ios5

我想在图像视图中显示图像(宽度:320像素,高度:1250像素).

当我编译应用程序时,我根本没有滚动.视图保持不变.

我做了什么:

  1. 在我的视图中添加了一个UIScrollViewvia Interface Builder.
  2. UIImageView在我的视图中添加了一个via Interface Builder.
  3. 在Interface Builder中验证了UIImageView以下内容UIScrollView.
  4. 设置UIScrollViewwith 的大小ViewDidLoad.

我该怎么做呢?

码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    scrollView.contentSize = CGSizeMake(320, 1250);
}
Run Code Online (Sandbox Code Playgroud)

截图:

ImageView:

在此输入图像描述

ScrollView:

在此输入图像描述 在此输入图像描述

在此输入图像描述

Kru*_*nal 27

我刚刚完成了同样的任务..尝试这个......

scrollView.delegate = self;
scrollView.scrollEnabled = YES;

int scrollWidth = 120;
scrollView.contentSize = CGSizeMake(scrollWidth,80);     


int xOffset = 0;
imageView.image = [UIImage imageNamed:[imagesName objectAtIndex:0]];

for(int index=0; index < [imagesName count]; index++)
{       
    UIImageView *img = [[UIImageView alloc] init];
    img.bounds = CGRectMake(10, 10, 50, 50);
    img.frame = CGRectMake(5+xOffset, 0, 50, 50);
    NSLog(@"image: %@",[imagesName objectAtIndex:index]);
    img.image = [UIImage imageNamed:[imagesName objectAtIndex:index]];
    [images insertObject:img atIndex:index];         
    scrollView.contentSize = CGSizeMake(scrollWidth+xOffset,110); 
    [scrollView addSubview:[images objectAtIndex:index]];

    xOffset += 70;
}
Run Code Online (Sandbox Code Playgroud)

还设置这个....

imagesName = [[NSArray alloc]initWithObjects:@"image1.jpg",@"image2.jpg",@"image3.jpg",@"image4.jpg",@"image5.jpg",@"image6.png",@"image7.png",@"image9.png",nil];
    images = [[NSMutableArray alloc]init];
Run Code Online (Sandbox Code Playgroud)

  • Alex:在循环结束时手动释放的建议适用于非ARC代码.但有一点,如果您使用自动释放,我们确切地知道运行时何时会释放图像.它总是发生在事件循环的末尾.这是引用计数,而不是垃圾回收. (2认同)

git*_*rik 26

所以对我来说问题是设置内容大小不起作用viewDidLoad().我尝试了一切,我不明白为什么它不想工作,然后我尝试了相同的东西viewDidAppear(),它神奇地工作...


Mat*_*uch 10

从你的最后一个截图和你的评论看起来你的scrollView是大的.滚动视图必须完全在屏幕上可见.例如,iPhone上的全屏UIScrollView的大小为320 x 460.

如果滚动视图的大小与其内容相同,则无法滚动.

绿色矩形显示滚动视图的大小,粉红色的内容大小(您的图像):

在此输入图像描述


Kha*_*tee 6

我在iOS6上遇到了同样的问题,解决方案是以编程方式调整ContentSize.所以我将引用Raja(上图)来说明这一点:

CGSize scrollViewContentSize = CGSizeMake(320, 400);
[self.scrollView setContentSize:scrollViewContentSize];
Run Code Online (Sandbox Code Playgroud)

注意:我在iOS5上没有这个问题..似乎iOS6决定做很多恶作剧就像旋转/定向传奇


小智 6

从Xcode 5开始,它不像以前那样工作.滚动到可滚动文本字段的末尾也会产生问题.在iPhone或iPad上进行此操作也存在差异.在iPhone上它没有延迟计时器.

这对我有用:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSTimer *timerforScrollView;
    timerforScrollView =[NSTimer scheduledTimerWithTimeInterval:0.1
           target:self selector:@selector(forScrollView)userInfo:nil repeats:NO];   
}

- (void) forScrollView {
    [scrollviewPad setScrollEnabled:YES];
    [scrollviewPad setContentSize:CGSizeMake(768, 1015)]; // must be greater then the size in Storyboard
}
Run Code Online (Sandbox Code Playgroud)


Jul*_*ius 6

我发现我有类似的问题,但上述代码都没有奏效.问题是由于自动布局.我发现如果我通过单击"实用程序" - >"文件检查器"转到故事板关闭自动布局,并取消选中Use Autolayout滚动功能(我也设置scroll.contentSize = ...).


Đor*_*vić 5

Swift 4,iOS 11

使用自动版式的最简单方法:

  1. 添加UIScrollView并将其固定为0,0,0,0以进行超级视图(或您想要的大小)
  2. 在ScrollView中添加UIView,将其0,0,0,0固定到所有4个侧面,并将其水平和垂直居中。
  3. 在尺寸检查器中,将“底部”和“对齐中心Y”的优先级更改为250。
  4. 将所需的所有视图添加到该视图中。不要忘记在最低视图上设置底部约束。