Tengo 7 las células en una sección en un UICollectionView.
He buscado durante horas y horas, pero todo lo que puedo encontrar es información acerca de CollectionFlow y diseños Personalizados con cientos de células. Todo lo que quiero es mostrar el 7 de células con diferentes identificadores en una colección de la vista usando un diseño como este de la imagen:

Diseño personalizado para la colección vista en swift?

¿Cómo puedo conseguir este diseño?

donde están las células que supone?
En un UICollectionView. Deben ser asimétrica como la imagen de arriba.
por lo que cada caja gris es una célula? hay suponer para ser más ya que preguntaron por 7 celdas en una sección, pero en el diagrama sólo muestra 3
Sí, y deben ser de 7 como eso. Ese es un ejemplo con los 3 primeros.

OriginalEl autor eeschimosu | 2015-04-07

4 Comentarios

  1. 1

    Que es mi solución.

    class HistoryLayout: UICollectionViewLayout {
    var delegate : HistoryLayoutDelegate?
    var yOffSet : CGFloat = 0
    var xOffSetLand : CGFloat = 0
    var xOffSetPort : CGFloat = 0
    var portraitElements : [Int] = []
    var portraintItemPositionIndex = PortraintItemPositionIndex.Left
    private var cache = [CGRect]()
    var contentHeight: CGFloat  = 0.0
    var contentWidth: CGFloat {
    let insets = collectionView!.contentInset
    return CGRectGetWidth(collectionView!.bounds) - (insets.left + insets.right)
    }
    override func collectionViewContentSize() -> CGSize {
    return CGSize(width: contentWidth, height: contentHeight)
    }
    override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
    var layoutAttributes = [UICollectionViewLayoutAttributes]()
    for item in 0 ..< collectionView!.numberOfItemsInSection(0) {
    let indexPath = NSIndexPath(forItem: item, inSection: 0)
    let attributes = UICollectionViewLayoutAttributes(forCellWithIndexPath: indexPath)
    attributes.frame = cache[item]
    if CGRectIntersectsRect(attributes.frame, rect) {
    layoutAttributes.append(attributes)
    }
    }
    //send index list of elements with portraint position
            if let _ = delegate {
    delegate?.elementsWithVerticalPosition(self.portraitElements)
    }
    return layoutAttributes
    }
    override func prepareLayout() {
    if cache.isEmpty {
    var gropCount = Int(collectionView!.numberOfItemsInSection(0) / 3)
    if collectionView!.numberOfItemsInSection(0) % 3 != 0 {
    gropCount++
    }
    for index in 1...gropCount {
    self.improGroupByItem(index)
    contentHeight = ((contentWidth / 3) * 2) * CGFloat(index)
    }
    }
    }
    private func improGroupByItem(index : Int){
    if index % 2 == 0 {
    xOffSetLand = contentWidth / 3
    xOffSetPort = 0
    self.portraintItemPositionIndex = .Right
    }else{
    xOffSetLand = 0
    xOffSetPort = (contentWidth / 3) * 2
    self.portraintItemPositionIndex = .Left
    }
    if index > 1 {
    self.yOffSet += (contentWidth / 3) * 2
    }
    addItemToStack(index)
    }
    func addItemToStack(gIndex : Int){
    let columnWidth = self.contentWidth / 3
    var frame : CGRect
    var dublicate = 0
    for index in 1...3 {
    if index % portraintItemPositionIndex.rawValue == 0 {
    let width = columnWidth * 1
    let height = columnWidth * 2
    frame = CGRect(x: self.xOffSetPort, y: yOffSet, width: width, height: height)
    let indexOfPortElement = ((gIndex - 1)*3) + index - 1
    portraitElements.append(indexOfPortElement)
    }else{
    let width = columnWidth * 2
    let height = columnWidth * 1
    frame = CGRect(x: self.xOffSetLand, y: yOffSet + (height * CGFloat(dublicate)), width: width, height: height)
    dublicate++
    }
    cache.append(frame)
    }
    }
    }

    OriginalEl autor Max Vitruk

  2. 0

    Es posible con el FlowLayout, pero usted tiene que personalizar el FlowLayout Atributos.

    Para diferentes tamaños de celda utilizar este método –

    -(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
    OP pidió swift

    OriginalEl autor Uttam Sinha

Dejar respuesta

Please enter your comment!
Please enter your name here