2014-08-28 5 views
3

Я начинаю с быстрым, и я не могу получить изменение размера UIImageView.Как изменить размер UIImageView (swift)

Вот мой текущий макет:

Current layout

То, что я хочу, чтобы изменить размер изображения, чтобы занять половину ширины способность экрана (2 изображения в строке).

Вот моя Раскадровка:

storyboard

Здесь функция рисования представления коллекции внутри моего контроллера:

func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! { 
     var cell : MenuInspirationCellView = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as MenuInspirationCellView 

     cell.imageView.layer.borderWidth = 2 
     cell.imageView.layer.borderColor = UIColor.yellowColor().CGColor 

     //This is my first approach trying to modify the frame : 
     cell.imageView.frame = CGRectMake(0,0, self.view.bounds.width/2,v120) 
     var cellImage : UIImage = UIImage(data: NSData(contentsOfURL: NSURL(string:    images[indexPath.row]))) 
     cell.imageView.image = cellImage; 

     //This is my second approach (based on http://www.snip2code.com/Snippet/89236/Resize-Image-in-iOS-Swift) : 


     // to resize an image to dimension 52x52 
     //var newSize:CGSize = CGSize(width: 52,height: 52) 
     //let rect = CGRectMake(0,0, newSize.width, newSize.height) 
     //UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0) 
     // image is a variable of type UIImage 
     //cellImage.drawInRect(rect) 
     //let newImage = UIGraphicsGetImageFromCurrentImageContext() 
     //UIGraphicsEndImageContext() 
     // resized image is stored in constant newImage 
     //cell.imageView.image = newImage; 


     //This is my thrid approach (based on https://gist.github.com/hcatlin/180e81cd961573e3c54d, of course i added his functions but I don't show them here for the sake of readability) : 
     //cell.imageView.image = self.RBSquareImageTo(cellImage, size: CGSize(width: 80, height: 80)) 

     return cell 
    } 

зацепки, чтобы разобраться в этом?

ответ

3

Размеры ваших ячеек определяются вашим UICollectionViewLayout объектом, который является UICollectionViewFlowLayout в вашем случае. Если вы хотите, чтобы все ваши ячейки имели одинаковый размер, вы можете настроить свойства самого макета; itemSize и minimumInterimSpacing сделают трюк. С другой стороны, если вы хотите, чтобы ваши клетки быть разными размерами, скажем, в зависимости от изображения каждого содержит или любой другие, вы нуждаетесь в вашей коллекцию вида делегата для реализации UICollectionViewDelegateFlowLayout метода:

optional func collectionView(collectionView: UICollectionView!, layout collectionViewLayout: UICollectionViewLayout!, sizeForItemAtIndexPath indexPath: NSIndexPath!) -> CGSize 

возвращающегося размер вы хотите для каждой ячейки.

+0

Спасибо! Теперь я могу динамически изменять размеры своих ячеек. Но как изменить размер изображения внутри каждой ячейки? –

+0

Без проблем, @AlexandreNucera. Изображение внутри каждой ячейки можно изменить, отредактировав различные ограничения автоопределения в вашем xib или в коде, установив свойство 'autoresizingMask'' UIImageView '' или вручную сделав макет в '' layoutSubviews' MenuInspirationCellView''. – stefandouganhyde

+0

Спасибо, это именно то, что мне нужно. Я получил эту работу, изменив мои ограничения (я удалил фиксированную ширину и высоту 120). –

0

После этого учебники вы можете изменить размер UIImage, В этом руководстве описан полнее .. Image Resize in swift ios8

func imageResize (imageObj:UIImage, sizeChange:CGSize)-> UIImage{ 

    let hasAlpha = false 
    let scale: CGFloat = 0.0 // Automatically use scale factor of main screen 

    UIGraphicsBeginImageContextWithOptions(sizeChange, !hasAlpha, scale) 
    imageObj.drawInRect(CGRect(origin: CGPointZero, size: sizeChange)) 

    let scaledImage = UIGraphicsGetImageFromCurrentImageContext() 
    return scaledImage 
} 

Здесь вы также можете увидеть много учебников о Swift язык Посетите Здесь iPhone & iPad Application Development Help World

3

СВИФТ:

func imageResize(imageObj:UIImage, sizeChange:CGSize)-> UIImage { 

    let hasAlpha = false 
    let scale: CGFloat = 0.0 // Automatically use scale factor of main screen 

    UIGraphicsBeginImageContextWithOptions(sizeChange, !hasAlpha, scale) 
    imageObj.drawInRect(CGRect(origin: CGPointZero, size: sizeChange)) 

    let scaledImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() // !!! 
    return scaledImage 
} 
Смежные вопросы