2015-02-06 129 views
0

在swift中,如何将滚动视图的宽度设置为屏幕大小的宽度?在Autolayout中只能使用固定宽度的滚动查看

我尝试设置正确的前后边界,但我的aspectcalefill图像不断拉伸整个框架。

我试图强制视图是屏幕的宽度,并只允许垂直滚动。

+0

这里涉及哪些内容?你说scrollView和UIImageView?你使用nix还是xib? – YuviGr 2015-02-06 22:28:48

+0

使用故事板,我有一个父视图>滚动视图>然后一堆子视图包含所有的标签和延伸的图像视图(一些图像是巨大的,这就是为什么我使用了aspectcalefill) – Taylor 2015-02-06 22:31:21

+0

你是否将所有元素添加到在故事板或代码中滚动视图? – YuviGr 2015-02-06 22:33:03

回答

0

我创建了一个单一视图应用程序,并在故事板中添加了一个UIScrollView,其中有四个约束(顶部,左侧,右侧,底部)。我在viewDidLoad()中添加下面的代码。一切正常。我的图像只能垂直滚动,但不能水平滚动。无需其他设置。

enter image description here

@IBOutlet weak var scrollView: UIScrollView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Just as an example, I make a size with same with of the view 
    // and twice the height of the view. 
    let size = CGSizeMake(
     self.view.frame.size.width, 
     self.view.frame.size.height * 2); 

    // Load an image and make a image view 
    let image = UIImage(named: "im.jpg")! 
    let imageView = UIImageView(image: image) 
    imageView.frame = CGRect(
     origin: CGPoint(x: 0, y: 0), 
     size: size); 
    imageView.contentMode = UIViewContentMode.ScaleToFill; 

    // Add the image view to scroll view 
    scrollView.addSubview(imageView) 
    scrollView.contentSize = size; 
} 
0

您的问题是由于您将元素添加到storyBoard中的scrollView而导致的。

在故事板,你需要:

1)添加了滚动,如果你需要在再设置它的尾随和前导空格,以上海华以0

2屏幕的宽度)取消选中“允许水平滚动”,在属性检查器中

在你的代码

1)设置scrollView'scontentSize到什么都大小,你希望它是。

1.1)在你的代码,你需要设置的内容查看的大小,像这样

scroller.contentSize = CGSizeMake(your width, your height); 

这是一个非常重要的一步,滚动视图将不能,如果你不设置大小滚动。将scrollView视为窗口,将contentView视为视图。如果contentView与scrollView的大小相同,那么scrollView无法在任何位置滚动(所有contentView都适合scrollView),以创建滚动条,您需要使contentView变大然后滚动查看本身

2 )开始通过调用

[scroller addSubView:<your view>]; 

这将您的意见添加到scrollView'scontentView加入你的元素到scrollView'scontentView,将是

+0

感谢您的答复。我完全按照您在答案中详细说明的方式实施。但它不是垂直滚动。我是否应该将视图拖入故事板的滚动视图? http://i.imgur.com/XK5cYdH.png – Taylor 2015-02-06 23:49:53

+0

你的contentView的大小是多少? – YuviGr 2015-02-06 23:57:50

+0

'contentView'被固定到'scrollView'(所有4个约束) – Taylor 2015-02-06 23:59:52

1

如果你想用自动布局滚动视图尝试。根本没有代码,所以你将不得不把东西拖出Xcode的右边。

在你的视图控制器中拖动并将滚动视图的大小放到你想要的任何地方,但它看起来像你想使它成为屏幕的大小。将所有边缘固定到视图控制器的边缘。引脚尾随,领先,顶部和底部。

现在,不是将您的项目放在滚动视图中,而是将另一个视图放在滚动视图中。有了这个新的视图,你会放置所有的物品。您很可能必须将视图向上或向下移动以放置所有视图并调整视图大小。然后你可以在你的物品上放置任何你想要的约束。当所有项目都位于其位置时,将新视图的框架重新设置为x = 0和y = 0。

然后,您将按如下方式放置约束。选择新视图并将其固定到顶部,底部,尾部和前导,然后居中放置在容器中。这将产生一个与一些负数垂直的约束。在故事板轮廓中选择此约束并将其设置为零。

您现在可以垂直滚动。如果您有任何问题,请告诉我。

+0

谢谢!在几个教程甚至一本书之后,没有人提供了不想水平滚动的关键。它将该约束添加到将视图集中在容器中的视图中。谢谢@Douglas – 2015-12-20 22:12:11

+0

不是问题!快乐的编码。 – Douglas 2015-12-21 01:43:18