2014-12-07 10 views
7

Projektuję interfejs użytkownika aplikacji ios 8, która jest wbudowana w szybki. Mam pośrednią wiedzę na temat autolayout i ograniczeń. Oto moja sytuacja: Mam niestandardowy kontroler widoku kolekcji i komórkę widoku kolekcji. Chcę użyć ograniczeń "równej szerokości" i "równej wysokości" w programie budującym interfejs, aby ustawić szerokość i wysokość komórki w stosunku do mnożnika widoku nadrzędnego - w przeciwieństwie do używania wewnętrznych właściwości wysokości/szerokości, takich jak 320 x 94.Najlepsze praktyki dotyczące ustawiania ograniczeń szerokości i wysokości autolayout dla komórki widoku kolekcji?

Oto, co starałem

  1. stosując wewnętrzną szerokość i wysokość dla klas wielkości w IB. (To nie działa)
  2. Control Przeciąganie z UICollectionViewCell do CollectionView (nie działa skoro „równych wysokościach” i „równych szerokościach” nie są nawet ograniczające możliwości)

należy po prostu ustalcie wysokość i szerokość wewnętrzną i zakładajcie, że CollectionViewFlowLayout zaopiekuje się mną, czy jest jakiś sposób, aby to zrobić programowo?

Dzięki. Alex

+0

Nikt szwy znać odpowiedź na to pytanie. To bardzo denerwujące, aby tworzyć widoki kolekcji i nie można oglądać podglądu edytowanych elementów. –

Odpowiedz

-1

pomocą UICollectionViewDelegateFlowLayout metod, aby dostosować rozmiar komórek

na przykład, jeśli chcesz 3 komórki na całej szerokości widoku

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize 
{ 
    let width = CGRectGetWidth(collectionView.bounds) 
    let hcount = 3 
    let gapcount = CGFloat(hcount) + 1 
    //this should be a class var/constant which you can feed into the minimumLineSpacingForSectionAtIndex delegate 
    let gap = 10 
    let kwidth = width - gap 
    let keywidth = kwidth/CGFloat(hcount) 

    return CGSize(width:keywidth,height:50) 
} 

Można dostroić odległość między komórkami z

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat

i krawędziowe wypustki z

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets

0

Układ i wielkość komórek odbywa się poprzez collectionViewLayout własności CollectionView. Korzystanie z collectionViewLayout klasowej UICollectionViewFlowLayout można ustawić stały rozmiar za pomocą właściwości rozmiarze pozycja:

(collectionView.collectionViewLayout as? UICollectionViewFlowLayout)?.itemSize = 100 //set fixed size here 

lub ustawić zmienną wielkość stosując metodę delegata:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
    // determine variable size here using indexPath value 
}