Как загрузить iCarousel view из раскадровки или XIB?

Я использую один сторонний контроль iCarousel вид, чтобы показать вид с хорошей анимацией.

Все работает нормально, и я в значительной степени осведомлен об этом контроле.

Но до сих пор я использую код вручную, чтобы добавить представление в iCarousel просмотреть и показать его на экране, но теперь, согласно моим новым требованиям, я получил от 3 до 4 новых тем, которые мне нужно показать iCarousel так что ниже мой вопрос, связанный с этим мнением.

  1. Как я могу загрузить различные виды из XIB?

  2. Как я могу загрузить вид из Storyboard К iCarousel Посмотреть?

В настоящее время я использую метод ниже, чтобы добавить представление вручную.

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

Пожалуйста, помогите мне достичь этого через Storyboard/ XIB,

2 ответа

Решение

Создайте iCarousel с перевернутым типом колеса, используя пользовательский вид из пера

   @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
    }

}

Объектив С

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

здесь 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;
    }
Другие вопросы по тегам