Я разрабатываю простое коммерческое приложение в iPhone с помощью Swift 3, и я новичок в разработке. У меня есть ViewController с UIView, который обрабатывает изображения с помощью UIPageControl. У меня также есть метки и горизонтальные прокрутки UICollectionViews в том же ViewController. Я настроил свой scrollview с помощью Storyboard и настроил код UIPageControl в коде.Как отображать слайды изображений UIView и CollectionViews в двух пользовательских TableViewCells?
Проблема: когда я ввел прокрутку в ViewController, UIPageControl и CollectionViewCells остаются в том же положении.
У меня есть образец здесь. Пожалуйста, см. Изображение для лучшего понимания: Image showing my ViewController where the PageControl stays same while the View is scrolled и другое изображение ViewController while scrolling up.
Итак, я обнаружил, что scrollview сталкивается со свитками CollectionView и PageControl.
Может кто-нибудь рассказать мне, как я могу вставлять свой UIView для скользящих изображений в пользовательский TableViewCell и остальную часть моего CollectionViews в другой пользовательский TableViewCell, чтобы включить вертикальную прокрутку?
Вот мой ViewController.swift:
import UIKit
class Home: UIViewController{
@IBOutlet var myView: UIView!
@IBOutlet var pageControl: UIPageControl!
override func viewDidLoad() {
super.viewDidLoad()
self.addSlideMenuButton()
self.title="Home"
//Image Loop
self.pageControl.currentPage = -1
configurePageControl()
slide = -1
self.changeSlide()
var timer = Timer.scheduledTimer(timeInterval: 10
, target: self, selector: #selector(changeSlide), userInfo: nil, repeats: true);
myView.isUserInteractionEnabled = true
let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(self.swiped(_gesture:)))
swipeRight.direction = UISwipeGestureRecognizerDirection.right
myView.addGestureRecognizer(swipeRight)
let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(swiped(_gesture:)))
swipeLeft.direction = UISwipeGestureRecognizerDirection.left
myView.addGestureRecognizer(swipeLeft)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
var images = [UIImage(named:"banner2"),UIImage(named:"banner1"),UIImage(named:"banner3"),UIImage(named:"banner4"),UIImage(named:"banner5")]
var slide:Int = 0
func changeSlide(){
var loop : UIImageView!
loop = UIImageView(frame: myView.bounds)
loop.contentMode = UIViewContentMode.scaleToFill
if(slide == images.count-1)
{
slide=0
loop.image = images[slide]
self.pageControl.currentPage=slide
}
else
{
slide+=1
loop.image = images[slide]
self.pageControl.currentPage=slide
}
loop.layer.affineTransform()
myView.addSubview(loop)
}
@IBAction func pageChange(_ sender: AnyObject) {
}
func swiped(_gesture: UIGestureRecognizer) {
var loop : UIImageView!
loop = UIImageView(frame: myView.bounds)
loop.contentMode = UIViewContentMode.scaleToFill
loop.image = images[slide]
myView.addSubview(loop)
if let swipeGesture = _gesture as? UISwipeGestureRecognizer {
switch swipeGesture.direction {
case UISwipeGestureRecognizerDirection.right :
// decrease index first
// check if index is in range
if (slide == 0) {
slide = images.count-1
loop.image = images[slide]
self.pageControl.currentPage = slide
}
else
{
slide-=1
loop.image = images[slide]
self.pageControl.currentPage = slide
}
case UISwipeGestureRecognizerDirection.left:
// increase index first
// check if index is in range
if (slide == images.count-1) {
slide = 0
loop.image = images[slide]
self.pageControl.currentPage = slide
}
else{
slide+=1
loop.image = images[slide]
self.pageControl.currentPage = slide
}
default:
break //stops the code/codes nothing.
}
}
}
func configurePageControl() {
self.pageControl.numberOfPages = images.count
self.pageControl.currentPage = slide
self.pageControl.tintColor = UIColor.red
self.pageControl.pageIndicatorTintColor = UIColor.gray
self.pageControl.currentPageIndicatorTintColor = UIColor.green
self.myView.addSubview(pageControl)
self.view.addSubview(pageControl)
}
}
Этот документ содержит код для UIView контура изображения и UIPageControl также с возможностью перелистывать изображения.
Может кто-то, пожалуйста, помогите мне? Заранее спасибо.
Эй спасибо за ответ. Да, ваш ответ помогает. Однако я новичок в этом и сомневаюсь. Что такое MyIndicator и DetailsViewViewModel! и зачем использовать его? Также не могли бы вы разместить полный код для моего лучшего понимания? Особенно TableViewCell класс кода также для textCell и starRatingCell. –
txtCell - это текстовая ячейка в остальной части таблицыView и starRatingCell - это ячейка рейтинга для моего приложения для фильмов. Ячейка txtCell такая же, как и MovieCollectionViewCell, только разница в том, что ее tableViewCell и вместо UIImageView есть UIlabel. Для ознакомления с кодом [мой предстоящий проект фильмов] (https://github.com/PravinNagargoje/movies) –