UIScrollView не может отображать изображение ни в портретном, ни в ландшафтном режиме

avatar
MilkBottle
3 июня 2015 в 10:13
631
1
1

Я создал ВК с ориентацией в альбомной ориентации в раскадровке

Я добавил в него UIIScrollView, скажем, сделайте это: (w) 1000, 500 (h) в VC.

Что я хотел сделать:

1) Прокрутка изображения (с высоким разрешением, например, 1334 x 750) внутри ScrollView
2) просмотреть изображение в ScrollView в альбомном режиме


To make ScrollView to display the image, I have to do it in `viewDidAppear` 

but here the Problems:

1) The Width and height of the `ScrollView` is gone
2) label on top gone.
3) The `ScrollView` Size become small something like 200 x 150 and start from the Top corner like (0,0)
What I need to do to make `scrollview` size like before 1000 x 500? --- Update --
class ViewController: UIViewController, UIScrollViewDelegate { @IBOutlet weak var myUIScrollView: UIScrollView! var imgView: UIImageView! override func viewDidLoad() { super.viewDidLoad() //-- force to landscape mode: let value = UIInterfaceOrientation.LandscapeLeft.rawValue UIDevice.currentDevice().setValue(value, forKey: "orientation") self.myUIScrollView.maximumZoomScale = 10.0 self.myUIScrollView.minimumZoomScale = 1.0 self.myUIScrollView.delegate = self imgView = UIImageView(image: UIImage(named: "MyPhoto.png")) } override func viewDidAppear(animated: Bool) { self.myUIScrollView.contentSize = imgView.bounds.size self.myUIScrollView.addSubview(imgView) view.addSubview(myUIScollView) } override func shouldAutorotate() -> Bool { return true } func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { return imgView }
Источник
matthias
3 июня 2015 в 10:15
0

Если вы используете ресурсы Xcode и у вас есть коллекция изображений с именем my-image, вам необходимо использовать UIImage (name: "my-image").

MilkBottle
3 июня 2015 в 10:38
0

Не работает. Скажем, я создал набор изображений в вызове Xcasset: Photo1 и поместил в него MyPhoto.png, MyPhoto1.png, MyPhoto2.png, .. Я последовал твоему методу. Я использую UIImage (названный: "Photo1"), он не работает.

matthias
3 июня 2015 в 15:03
0

Вы должны создать набор изображений для каждого изображения, а пробелы предназначены для трех размеров, таких как image1.png, image1@2x.png и image1@3x.png, а затем вы можете запустить свой UIImage с именем «image1».

MilkBottle
4 июня 2015 в 04:43
0

Отображение изображения теперь в порядке после того, как я изменил код в viewDidAppear. Проблема в том, что Scrollview стал таким маленьким в моем обновленном коде. он прилипает к верхнему углу.

Ответы (1)

avatar
Mohammad Yunus
8 апреля 2019 в 07:23
0

Попробуйте это:

import UIKit

class ViewController: UIViewController, UIScrollViewDelegate {

var image: UIImage!{
    get{
        return myImageView.image!
    }set{
        myImageView.image = newValue
        myImageView.sizeToFit()
        myScrollView.contentSize = myImageView.frame.size
    }
}

var myImageView = UIImageView()

@IBOutlet weak var myScrollView: UIScrollView!{
    didSet{
        myScrollView.delegate = self
        myScrollView.minimumZoomScale = 10.0
        myScrollView.maximumZoomScale = 1.0
        myScrollView.addSubview(myImageView)
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    image = UIImage(named: "one")
}

func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return myImageView
}
}