Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
403 views
in Technique[技术] by (71.8m points)

ios - How to load iCarousel view from storyboard or xib?

I am using one 3rd party control iCarousel view to show view with nice animation.

Every thing is working fine and i am pretty much aware about this control.

But till now I am using manually code to add view in iCarousel view and show it on screen but now as per my new requirement are i got 3 to 4 new themes which i need to show iCarousel view so below is my question related to that view.

  1. How can i load different views from XIB?

  2. How can i load view from Storyboard TO iCarousel view?

Currently i am using below method to add view manually.

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

Please help me to achieve this through Storyboard/ XIB.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Create a iCarousel with a inverted wheel type using a custom view from nib

   @IBOutlet weak var viewCarousel: iCarousel!

    override func viewDidLoad() {
            super.viewDidLoad()
        viewCarousel.type = .invertedWheel
        viewCarousel.isVertical = true
        viewCarousel.delegate = self
        viewCarousel.dataSource = self
    }

iCarousel DataSource

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
    }

}

Objectiv 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 DataSource

-(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;
}

here CustomView is my subclass of UIView and "customView" is UIView Xib name i hope this help you

More info :- https://github.com/nicklockwood/iCarousel


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...