我正在尝试使用UIScrollView来显示一系列UIViews。在我的故事板中,我有一个View Controller,其中包含一个使用AutoLayout约束的UIView。
查看控制器(灰色的UIView)
为了调用UIScrollView,我使用以下方法:
func initScrollview() {
self.mainScrollView = UIScrollView(frame: self.mainView.bounds)
self.mainScrollView!.contentSize = CGSizeMake((self.mainView.bounds.width)*CGFloat(3), self.mainView.frame.height)
self.mainScrollView!.backgroundColor = UIColor.greenColor() // For visualization of the UIScrollView
self.mainScrollView!.pagingEnabled = true
self.mainScrollView!.maximumZoomScale = 1.0
self.mainScrollView!.minimumZoomScale = 1.0
self.mainScrollView!.bounces = false
self.mainScrollView!.showsHorizontalScrollIndicator = true;
self.mainScrollView!.showsVerticalScrollIndicator = false;
self.mainScrollView!.delegate = self
for i in 0...3 {
var tempView = SubView(frame: self.mainView.bounds)
pages.insert(tempView, atIndex: i)
self.mainScrollView!.addSubview(pages[i]);
}
self.mainScrollView!.scrollRectToVisible(CGRectMake(mainScrollView!.frame.size.width, 0, mainScrollView!.frame.size.width, mainScrollView!.frame.size.height), animated: false)
}
当我运行我的代码时,UIScrollView不适合UIView。相反,它太短而且太宽。结果如下:
UIView为灰色,UIScrollView为绿色
我做错了什么导致UIScrollView的大小不正确?
答案 0 :(得分:0)
在上面的代码中,没有提到将mainScrollView添加到mainVew。
你在哪个视图中添加mainScrollView?我的意见是你试图将它添加到self.view,而它应该是 self.mainView
调用initScrollView()函数后,尝试添加以下代码
a
答案 1 :(得分:0)
如果您将所有这些视图直接放在故事板中而不是以编程方式放置,这可能会更容易。我在代码中看不到任何无法在IB中直观完成的内容。此外,如果您在故事板中激活了autoLayout,则在代码中设置框架和大小将无法正常工作。 (自动布局将在下一次通过时更改您的值)
答案 2 :(得分:0)
您应该将您初始化UI元素大小的代码放在UIView
的屏幕大小(UIViewController
的{{1}})上。因为在viewDidLayoutSubviews
中,屏幕尚未调整其大小,