2015-04-22 3 views
0

Я использую UIScrollView с UIImageView как подвью. Теперь эффект масштабирования работает нормально, но изначально размер изображения дезориентирован, как показано на скриншоте. Что я должен сделать, чтобы он попал в центр. Вот мой кодДобавление UIimageView в UIScrollView

@IBOutlet weak var scrollView: UIScrollView! 
var imageView = UIImageView(); 
    override func viewDidLoad() { 
    super.viewDidLoad() 
    scrollView.delegate = self 
    imageView.frame = CGRectMake(16, 16, scrollView.frame.size.width, scrollView.frame.size.height) 
    imageView.contentMode = UIViewContentMode.ScaleToFill 
    imageView.image = UIImage(named: "abc.png") 
    var imagee = UIImage(named: "abc.png") 
    let size = imagee?.size 
    //imageView.contentMode = UIViewContentMode.ScaleAspectFit 
    imageView.userInteractionEnabled = true 
    scrollView.addSubview(imageView) 
    scrollView.contentSize = size! 
    let scrollViewFrame = scrollView.frame 
    let scaleWidth = scrollViewFrame.size.width/scrollView.contentSize.width 
    let scaleHeight = scrollViewFrame.size.height/scrollView.contentSize.height 
    let minScale = min(scaleHeight, scaleWidth) 

    scrollView.minimumZoomScale = minScale 
    scrollView.maximumZoomScale = 1 
    scrollView.zoomScale = minScale 

    centerScrollViewContents() 
    } 
func centerScrollViewContents(){ 
    let boundsSize = scrollView.bounds.size 
    var contentsFrame = imageView.frame 

    if contentsFrame.size.width < boundsSize.width{ 
     contentsFrame.origin.x = (boundsSize.width - contentsFrame.size.width)/2 
    }else{ 
     contentsFrame.origin.x = 0 
    } 

    if contentsFrame.size.height < boundsSize.height { 

     contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height)/2 
    }else{ 
     contentsFrame.origin.y = 0 
    } 

    imageView.frame = contentsFrame 

} 

func scrollViewDidZoom(scrollView: UIScrollView) { 
    centerScrollViewContents() 
} 

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { 
    return imageView 
} 

Вот скриншот того, как я получаю изображение первоначально enter image description here

+0

Вы не должны выполнять действия, связанные с размером и положением, в 'viewDidLoad', поскольку ничего не было выполнено, а ширина, высота и т. Д. Будут неправильными. Лучше сделать это в 'viewWillAppear', где размеры должны быть более правильными. Вы можете добавить представления, просто выполните вычисления позиционирования позже. –

ответ

0

Поместите свой метод centerScrollViewContents внутри viewWillAppear.

Смежные вопросы