如何从storyboard或xib加载iCarousel视图?

我正在使用一个第三方控件iCarousel视图以良好的animation显示视图。

每一件事情都很好,我很清楚这个控制。

但直到现在,我正在使用手动代码添加视图在iCarousel视图,并显示在屏幕上,但现在根据我的新要求,我有3到4个新的主题,我需要显示iCarousel视图,所以下面是我的问题相关的视图。

  1. 我如何从XIB加载不同的意见?

  2. 我如何加载从StoryboardiCarousel视图的视图?

目前我正在使用下面的方法手动添加视图。

 viewForItemAtIndex:(NSInteger)index resuingView:(UIView*) view 

请帮我通过Storyboard/ XIB来实现这个function。

使用来自nib的自定义视图创build具有倒转轮types的iCarousel

  @IBOutlet weak var viewCarousel: iCarousel! override func viewDidLoad() { super.viewDidLoad() viewCarousel.type = .invertedWheel viewCarousel.isVertical = true viewCarousel.delegate = self viewCarousel.dataSource = self } 

iCarousel数据源

 func numberOfItems(in carousel: iCarousel) -> Int { return 25 } func carousel(_ carousel: iCarousel, viewForItemAt index: Int, reusing view: UIView?) -> UIView { // use a custom view from nib let view = Bundle.main.loadNibNamed("CarouselReuseView", owner: self, options: nil)![0] as! CarouselReuseView view.frame.size = CGSize(width: self.view.frame.size.width/2, height: 83.0) view.backgroundColor = UIColor.lightGray let friend = friendList[index] as friend view.lblName.text = friend.fullName let url = friend.photo let task = URLSession.shared.dataTask(with: URL(string: url)!, completionHandler: {data, response, error in if error == nil { DispatchQueue.main.async { view.imageView.image = UIImage(data: data!) view.imageView.layer.cornerRadius = view.imageView.frame.size.width/2 view.imageView.layer.masksToBounds = true } } }) task.resume() return view } } 

客观C

 @property (weak, nonatomic) IBOutlet iCarousel *carouselView; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. _carouselView.type = iCarouselTypeInvertedWheel; _carouselView.vertical = true; _carouselView.delegate = self; _carouselView.dataSource = self; _carouselView.layer.masksToBounds = true; } 

iCarousel数据源

 -(NSInteger)numberOfItemsInCarousel:(iCarousel *)carousel { return 10; } -(UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSInteger)index reusingView:(UIView *)view { CustomView* myViewObject = [[[NSBundle mainBundle] loadNibNamed:@"customView" owner:self options:nil] objectAtIndex:0]; myViewObject.lbl.text = [NSString stringWithFormat:@"%ld",(long)index]; return myViewObject; } 

这里CustomView是我的UIView的子类和“customView”是UIView Xib名称,我希望这可以帮助你

更多信息: – https://github.com/nicklockwood/iCarousel

尝试这个 :

 -(UIView *) carousel:(iCarousel *)carousel viewForItemAtIndex:(NSInteger)index reusingView:(UIView *)view{ UIView *globleView = (UIView *)view; if (!globleView) { globleView = [[[NSBundle mainBundle] loadNibNamed:@"yourView" owner:self options:nil] objectAtIndex:0];; globleView.backgroundColor = [UIColor clearColor]; UIImageView *imageView = [[UIImageView alloc]initWithFrame:globleView.frame]; imageView.tag = 100; [globleView addSubview:imageView]; UILabel *lblFeatureRecipeName = [[UILabel alloc]initWithFrame:CGRectMake(15, ViewHeight(globleView) -50, ViewWidth(globleView)-40, 50)]; lblFeatureRecipeName.tag = 101; [globleView addSubview:lblFeatureRecipeName]; if (index == 0) { [self refreshCarousleViewWithView:globleView withIndex:index]; } } return globleView; } 
    Interesting Posts