【问题标题】:Scrollview not loading additional Images滚动视图不加载其他图像
【发布时间】:2015-12-17 22:10:16
【问题描述】:

我有一个 UIView 用作简单的入职视图。我只是显示n 图像,用户可以滑动浏览。

加载的唯一图像是第一个图像“OnBoard-1”。当我调试添加到图像视图的内容时,其他图像就在那里。

我做错了什么?

.h

#import <UIKit/UIKit.h>
@interface OnBoardingView : UIView 
- (void)setImages:(NSArray *)newImages;
@end

这是.m文件

#import "OnBoardingView.h"

@interface OnBoardingView () <UIScrollViewDelegate>
{
    UIPageControl *pageControl;
    NSArray *contentImages;
}
@property (nonatomic, retain) UIPageControl *pageControl;
@property (nonatomic, retain) NSArray       *contentImages;
@end



@implementation OnBoardingView


@synthesize pageControl;
@synthesize contentImages;


- (id) initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) { }
    return self;
}

#pragma mark - Override contentImages setter

- (void)setImages:(NSArray *)newImages {
    if (newImages != self.contentImages) {
        self.contentImages = newImages;
        [self setup];
    }
}

#pragma mark - Carousel setup

- (void)setup {
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.frame];
    [scrollView setDelegate:self];
    [scrollView setShowsHorizontalScrollIndicator:NO];
    [scrollView setPagingEnabled:YES];
    [scrollView setBounces:NO];

    CGSize scrollViewSize = scrollView.frame.size;

    for (NSInteger i = 0; i < [self.contentImages count]; i++) {
        CGRect slideRect = CGRectMake(scrollViewSize.width * i, 0, scrollViewSize.width, scrollViewSize.height);

        UIView *slide = [[UIView alloc] initWithFrame:slideRect];
        [slide setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0]];

        UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.frame];
        [imageView setImage:[UIImage imageNamed:[self.contentImages objectAtIndex:i]]];
        NSLog(@"Image named: %@", [self.contentImages objectAtIndex:i]);
        [slide addSubview:imageView];

        [scrollView addSubview:slide];

    }

    UIPageControl *tempPageControll = [[UIPageControl alloc] initWithFrame:CGRectMake(0, scrollViewSize.height - 20, scrollViewSize.width, 20)];
    [self setPageControl:tempPageControll];

    [self.pageControl setNumberOfPages:[self.contentImages count]];
    [scrollView setContentSize:CGSizeMake(scrollViewSize.width * [self.contentImages count], scrollViewSize.height)];

    [self addSubview:scrollView];

    [self addSubview:self.pageControl];
}

#pragma mark - UIScrollViewDelegate

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat pageWidth = scrollView.frame.size.width;
    int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    [self.pageControl setCurrentPage:page];
}

@end

【问题讨论】:

    标签: ios objective-c uiview uiscrollview


    【解决方案1】:

    您使用scrollView 的框架初始化imageView,这无论如何都不正确,可能是您的问题的原因。

    顺便说一句:

    您的属性处理看起来有点奇怪(为什么要合成而不是只使用普通属性?),为什么要按指针比较数组 (newImages != self.contentImages)?

    【讨论】:

      【解决方案2】:

      如果您想直接在分页中显示图像,您可以指定页数。并将滑动手势(左右)应用于 imageview。基于左右滑动,您可以更改 imageview 的图像.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-21
        • 2015-10-26
        • 1970-01-01
        • 2013-11-09
        • 2012-12-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-25
        相关资源
        最近更新 更多