2015-02-06 133 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