如何从storyboard或xib加载iCarousel视图?
我正在使用一个第三方控件iCarousel
视图以良好的animation显示视图。
每一件事情都很好,我很清楚这个控制。
但直到现在,我正在使用手动代码添加视图在iCarousel
视图,并显示在屏幕上,但现在根据我的新要求,我有3到4个新的主题,我需要显示iCarousel
视图,所以下面是我的问题相关的视图。
-
我如何从
XIB
加载不同的意见? -
我如何加载从
Storyboard
到iCarousel
视图的视图?
目前我正在使用下面的方法手动添加视图。
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名称,我希望这可以帮助你
尝试这个 :
-(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; }