Video of the issue!Twitter-подобный UIScrollView с ViewControllers как страницы
Примера того, что я имею в виду Twitter-как UIScrollView:
Я в основном он работает, но у меня есть эта небольшая вопиющая проблема и Я не знаю, откуда он. Я проверил все ограничения и значения для моих двух контроллеров представления, но что-то не работает.
Короче говоря,
код, который создает NavBar, а затем заполнит его стороне две ViewControllers бок:
override func viewDidLoad() {
super.viewDidLoad()
var navBar: UINavigationBar = UINavigationBar(frame: CGRectMake(0, 0, self.view.bounds.width, 64))
navBar.barTintColor = UIColor.blackColor()
navBar.translucent = false
//Creating some shorthand for these values
var wBounds = self.view.bounds.width
var hBounds = self.view.bounds.height
// This houses all of the UIViews/content
scrollView = UIScrollView()
scrollView.backgroundColor = UIColor.clearColor()
scrollView.frame = self.view.frame
scrollView.pagingEnabled = true
scrollView.showsHorizontalScrollIndicator = false
scrollView.delegate = self
scrollView.bounces = false
self.view.addSubview(scrollView)
self.scrollView.contentSize = CGSize(width: self.view.bounds.size.width * 2, height: hBounds)
//Putting a subview in the navigationbar to hold the titles and page dots
navbarView = UIView()
//Paging control is added to a subview in the uinavigationcontroller
pageControl = UIPageControl()
pageControl.frame = CGRect(x: 0, y: 35, width: 0, height: 0)
pageControl.pageIndicatorTintColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 0.3)
pageControl.currentPageIndicatorTintColor = UIColor.whiteColor()
pageControl.numberOfPages = 2
pageControl.currentPage = 0
self.navbarView.addSubview(pageControl)
//Titles for the nav controller (also added to a subview in the uinavigationcontroller)
//Setting size for the titles. FYI changing width will break the paging fades/movement
navTitleLabel1 = UILabel()
navTitleLabel1.frame = CGRect(x: 0, y: 8, width: wBounds, height: 20)
navTitleLabel1.textColor = UIColor.whiteColor()
navTitleLabel1.textAlignment = NSTextAlignment.Center
navTitleLabel1.text = "Title 1"
self.navbarView.addSubview(navTitleLabel1)
navTitleLabel2 = UILabel()
navTitleLabel2.alpha = 0.0
navTitleLabel2.frame = CGRect(x: 100, y: 8, width: wBounds, height: 20)
navTitleLabel2.textColor = UIColor.whiteColor()
navTitleLabel2.textAlignment = NSTextAlignment.Center
navTitleLabel2.text = "Title 2"
self.navbarView.addSubview(navTitleLabel2)
//Views for the scrolling view
//This is where the content of your views goes (or you can subclass these and add them to ScrollView)
feedViewController = storyboard?.instantiateViewControllerWithIdentifier("FeedController") as FeedViewController
view1 = feedViewController.view
addChildViewController(feedViewController)
feedViewController.didMoveToParentViewController(self)
view1.frame = CGRectMake(0, 0, wBounds, hBounds)
self.scrollView.addSubview(view1)
self.scrollView.bringSubviewToFront(view1)
//Notice the x position increases per number of views
secondViewController = storyboard?.instantiateViewControllerWithIdentifier("SecondController") as SecondViewController
view2 = secondViewController.view
addChildViewController(secondViewController)
secondViewController.didMoveToParentViewController(self)
view2.frame = CGRectMake(wBounds, 0, wBounds, hBounds)
self.scrollView.addSubview(view2)
self.scrollView.bringSubviewToFront(view2)
navBar.addSubview(navbarView)
self.view.addSubview(navBar)
}
Я смотрел на мою раскадровки и оба ViewControllers кажутся идентичными в отношении к их ограничениям.
Я знаю, что это проблема, потому что оба ViewControllers заполнены UITableViews. Когда я просматриваю SecondViewController, он работает отлично. Когда я просматриваю FeedViewController, на вершине есть небольшое белое пространство, от которого я не могу избавиться, и он показывает, что текст отключается. Я давно застрял в этом, и если есть какая-то другая информация, я с радостью предоставил ее.
Редактировать: Включено видео проблемы. Если бы я мог, я бы напомнил этот вопрос прямо сейчас. Я не понимаю причину
Обновление: после замены обеих позиций ViewController я заметил, что проблема не связана ни с ViewController. Проблема заключается в том, что страница 1 установлена ниже. При замене первоначальный SecondViewController также испытывал такое же поведение.
Возможно, я просто не совсем понимаю, как subviews добавляются в представления. – David
Я полагаю, что я всегда мог бы сделать ограничения на левом, чтобы подняться на 20, но я не думаю, что должен был это сделать. Какая загадочная часть обо всем этом – David