Как изменить размер UIImageView (swift)



Я новичок в swift и не могу добиться изменения размера UIImageView.



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



Текущая компоновка



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



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



раскадровка



Вот функция, рисующая вид коллекции внутри моего контроллера:



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
}


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

1539   3  

3 ответов:

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

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

Возвращает размер, который требуется для каждой ячейки.

Свифт:

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
}

После этого руководства вы можете изменить размер UIImage, в этом руководстве описано полностью .. Изменение размера изображения в 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 language посетите здесь Мир помощи в разработке приложений для iPhone и iPad

Comments

    Ничего не найдено.