iCarousel 不会加载图像

Posted

技术标签:

【中文标题】iCarousel 不会加载图像【英文标题】:iCarousel won't load images 【发布时间】:2016-07-15 13:59:01 【问题描述】:

所以我尝试使用 iCarousel 以图像的形式显示产品,然后用户可以简单地滚动并查看所有可用的产品。

由于某种原因,当您加载视图控制器时,它根本不显示任何图像,甚至不显示轮播,它在我使用数字 int 等之前工作过。

我的代码如下:

ApparelViewController.m

#import "ApparelViewController.h"

@interface ApparelViewController ()

@property (nonatomic, strong) NSMutableArray *images;

@end

@implementation ApparelViewController

@synthesize carouselView = _carouselView;
@synthesize images = _images;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]))
    
        //get image paths
        NSArray *imagePaths = [[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:@"Products"];

        //preload images (although FXImageView can actually do this for us on the fly)
        _images = [[NSMutableArray alloc] init];
        for (NSString *path in imagePaths)
        
            [_images addObject:[UIImage imageWithContentsOfFile:path]];
        
    
    return self;


- (void)dealloc

    //it's a good idea to set these to nil here to avoid
    //sending messages to a deallocated viewcontroller
    _carouselView.delegate = nil;
    _carouselView.dataSource = nil;


- (void)viewDidLoad 
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor colorWithRed:236/255 green:240/255 blue:241/255 alpha:1];

    // Do any additional setup after loading the view.
    _carouselView.type = iCarouselTypeRotary;


- (void)viewDidUnload

    [super viewDidUnload];
    //free up memory by releasing subviews
    self.carouselView = nil;


- (NSInteger)numberOfItemsInCarousel:(iCarousel *)carousel

    return [_images count];


- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSInteger)index reusingView:(UIView *)view

    if (view == nil)
    
        FXImageView *imageView = [[FXImageView alloc] initWithFrame:CGRectMake(0, 0, 200.0f, 200.0f)];
        imageView.contentMode = UIViewContentModeScaleAspectFit;
        imageView.asynchronous = YES;
        imageView.reflectionScale = 0.5f;
        imageView.reflectionAlpha = 0.25f;
        imageView.reflectionGap = 10.0f;
        imageView.shadowOffset = CGSizeMake(0.0f, 2.0f);
        imageView.shadowBlur = 5.0f;
        imageView.cornerRadius = 10.0f;
        view = imageView;
    
    //show placeholder
    ((FXImageView *)view).processedImage = [UIImage imageNamed:@"page.png"];

    ((FXImageView *)view).image = _images[index];

    return view;


- (void)didReceiveMemoryWarning 
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.


- (IBAction)goBack:(id)sender 

    NSString * storyboardName = @"Main";
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
    UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"navBar"];
    [self presentViewController:vc animated:YES completion:nil];


@end

然后在ApparelViewController.h 文件中我有以下代码:

#import <UIKit/UIKit.h>
#import "iCarousel.h"
#import "FXImageView.h"

@interface ApparelViewController : UIViewController <iCarouselDelegate, iCarouselDelegate>

@property (strong, nonatomic) IBOutlet UIButton *backButton;
@property (strong, nonatomic) IBOutlet iCarousel *carouselView;

@end

真正烦人的是我以前使用过 iCarousel,但对于 Swift,所以我知道它是如何工作的,但我不太了解 Obj-C!

关于如何显示图像有什么想法吗?

【问题讨论】:

【参考方案1】:

你可以检查一些事情,

    检查 'images' 在 'numberOfItemsInCarousel' 中返回的值大于 0,很明显但值得检查。 检查图像是否实际加载,即检查 image[index] 是否实际加载图像。 我对 FXImageView 不太熟悉,但请尝试使用(void)setImage:(UIImage *)image; 而不是分配@property (nonatomic, strong) UIImage *image;。文档说 .image 实际上并没有设置图像,而是添加效果。

如果这些都不能解决您的问题,请发表评论,我会继续寻找,祝您好运。

【讨论】:

我已经尝试了很多东西,包括你的建议,但没有运气:(你有没有机会尝试使用 iCarousel 创建一个项目,看看你是否可以让它显示不同的图像请! 我不介意试一试,也许我们可以继续聊天?来这个房间,chat.***.com/rooms/26424/iosandroidchaosoverflow

以上是关于iCarousel 不会加载图像的主要内容,如果未能解决你的问题,请参考以下文章

iCarousel currentItemIndex 不会改变

在中心视图上滑动时,使用 iCarousel 加载 webView 不会滚动

icarousel 图像大小是多少

通过 iCarousel 将信息传递给多个 viewController

在 iOS 的 icarousel 中使用 AsyncImageView 的问题

在 iCarousel 的 iCarouselTypeRotary 视图中隐藏图像