Автолайтинг и раскадровка не работают - Swift? - PullRequest
0 голосов
/ 14 июня 2019

Я новичок в разработке swift и ios и следую этому уроку: https://www.youtube.com/watch?v=Vq71SPkJIus

Но по какой-то причине, несмотря на то, что у меня есть текст в представлении объектов с автопозицией, которая должна быть центрирована, он выходит полностью вниз

Снимок экрана: https://ibb.co/9p9XV4q

До сих пор я пытался изменить ограничения, но это, кажется, не сдвигает их вверх, это почти как что-то еще, толкает их вниз?

@IBOutlet weak var pageControl: UIPageControl!
    @IBOutlet weak var slideScrollView: UIScrollView!
    override func viewDidLoad() {
        super.viewDidLoad()

        slideScrollView.delegate = self
        let slides:[Slide] = createSlides()
        setupScrollView(slides: slides)
        pageControl.numberOfPages = slides.count
        pageControl.currentPage = 0
        // Do any additional setup after loading the view, typically from a nib.
    }

    func createSlides() -> [Slide] {
        let slide1:Slide = Bundle.main.loadNibNamed("Slide", owner: self, options: nil)?.first as! Slide
        slide1.label.text = "Slide1"

        let slide2:Slide = Bundle.main.loadNibNamed("Slide", owner: self, options: nil)?.first as! Slide
        slide2.label.text = "Slide2"

        return [slide1, slide2]
    }

    func setupScrollView(slides:[Slide]) {
        slideScrollView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.width)
        slideScrollView.contentSize = CGSize(width: view.frame.width * CGFloat(slides.count), height: view.frame.height)
        slideScrollView.isPagingEnabled = true

        for i in 0 ..< slides.count {
            slides[i].frame = CGRect(x: view.frame.width * CGFloat(i), y: 0, width: view.frame.width, height: view.frame.height)
            slideScrollView.addSubview(slides[i])
        }
    }

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let pageIndex = round(scrollView.contentOffset.x/view.frame.width)
        pageControl.currentPage = Int(pageIndex)
    }

Ответы [ 2 ]

0 голосов
/ 16 июня 2019

Ух ты, понял, что я просто тупой.Спасибо @vacawama за то, что в setupScrollView я поставил height: view.frame.width, а не height: view.frame.height.Это решило это большое спасибо @ vacawama

0 голосов
/ 14 июня 2019
class ViewController: UIViewController , UIScrollViewDelegate{

@IBOutlet weak var mainScroll: UIScrollView!

@IBOutlet weak var pageControl: UIPageControl!

let color = [UIColor.red,UIColor.blue,UIColor.gray,UIColor.orange,UIColor.brown]
let textBtn = ["A real-life bear","A real-life bear","A real-life bear","A real-life bear","A real-life bear"]
let textLb = ["Did you know that Winnie the chubby little cubby was based on a real, young bear in London","Did you know that Winnie the chubby little cubby was based on a real, young bear in London","Did you know that Winnie the chubby little cubby was based on a real, young bear in London","Did you know that Winnie the chubby little cubby was based on a real, young bear in London","Did you know that Winnie the chubby little cubby was based on a real, young bear in London"]

var counter = 0
var currentPage = 0


override func viewDidLoad() {
    super.viewDidLoad()
    for i in 0..<color.count {
        // Random Image set and scroll

        let xpostion = self.mainScroll.frame.width * CGFloat(i)
        let slide:Slide = Bundle.main.loadNibNamed("Slide", owner: self, options: nil)?.first as! Slide

        slide.frame = CGRect(x: xpostion, y:  0, width:  self.mainScroll.frame.width , height: self.mainScroll.frame.height)
        slide.backgroundColor = color[i]
        slide.textLabel.text = textLb[i]
        slide.textBtn.setTitle(textBtn[i], for: .normal)
        mainScroll.contentSize.width = mainScroll.frame.width * CGFloat(i + 1)            
        mainScroll.addSubview(slide)

    }
    mainScroll.delegate = self
    pageControl.numberOfPages = color.count
    pageControl.currentPage = 0
}

func scrollViewDidScroll(_ scrollView: UIScrollView)
{
    let pageWidth = mainScroll.frame.width
    self.currentPage = Int((mainScroll.contentOffset.x + pageWidth / 2) / pageWidth)
    self.pageControl.currentPage = self.currentPage
    counter = currentPage
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...