2016-09-28 5 views
0

Xcode 8を使用して、スクロールビューと画像ビューを持つストーリーボードをスクロールビューのサブビューとして使用してサンプルプロジェクトを作成しました。イメージビューのコンテンツモードが中央に設定されています。スクロールビューはスクロールしません。ここでスクロールビューと画像ビューの両方がストーリーボードにあるときに画像がスクロールしない

![Here are the constraints in the story board: scrollView]1

コード

import UIKit 

クラスのViewControllerです:私はプログラム的に私のImageViewのを作成するときのUIViewController {

@IBOutlet weak var imageView: UIImageView! 

@IBOutlet weak var scrollView: UIScrollView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    imageURL = "http://www.hdwallpapers.in/walls/cosmea_floral_bloom-wide.jpg" 
} 

var imageURL: String? { 
    didSet { 
     updateImage() 
     scrollView.contentSize = imageView.frame.size 
    } 
} 

func updateImage() { 
    if let data = NSData(contentsOf: URL(string:imageURL!)!) { 
     imageView.image = UIImage(data: data as Data) 
     imageView.sizeToFit() 
    } 
} 

}

しかし、scrollViewで動作します。上記のコードでは何が分かりませんか? UIViewController {

var image: UIImage? { 
    get { 
     return imageView.image 
    } 
    set { 
     imageView.image = newValue 
     imageView.sizeToFit() 
    } 
} 

var imageUrl: URL? { 
    didSet { 
     image = nil 
     fetchImage(url: imageUrl) 
    } 
} 

func fetchImage(url: URL?) { 
    let data = NSData(contentsOf: url!) 
    image = UIImage(data: data as! Data)! 
} 

var imageView = UIImageView() 

@IBOutlet weak var scrollView: UIScrollView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    imageUrl = ImageData.imageURL(for: ImageData.images["imageOne"]!)! 
    scrollView.addSubview(imageView) 
    scrollView.contentSize = imageView.frame.size 
} 

}

+0

ストーリーボードに設定したときに追加した制約はありますか? – beyowulf

+0

私は制約のスクリーンショットを追加しました – user3869369

答えて

0

あなたが整列中心Xを削除し、中心Y制約を揃える必要があります。以下のコードは、

import UIKit 

クラスImageViewController作品。これらの制約は、画像ビューを定位置に保持し、スクロールを許可していません。

これらを削除すると、制約エラーが発生する可能性があります。これは、設計時にレイアウトがあいまいであるためです。イメージビューの組み込みサイズはイメージに基づいていますが、実行時にイメージを設定する必要があります。これを解決するには、イメージビューを選択し、サイズインスペクタに行き、固有サイズドロップダウンメニューをクリックし、プレースホルダサイズを設定する必要があります。プレースホルダのサイズはデザイン時にのみ使用され、実行時に置き換えられます。

+0

うーん、チャンピオンのように動作します!ありがとう。 – user3869369

関連する問題