2013-10-10 8 views

risposta

2

È possibile scorrere l'array e creare la stringa (utilizzare NSMutableString). È necessario aggiungere le viste a un dizionario con chiavi che corrispondono ai nomi utilizzati nella stringa di formato.

2

Partenza questa categoria impressionante:

https://github.com/jrturton/UIView-Autolayout

Ha un metodo di spaceViews che è possibile chiamare sulla vista contenitore e spazio volontà una serie di punti di vista in modo uniforme lungo l'asse specificato.

C'è del codice di esempio nel progetto demo che dovrebbe coprire tutto.

Ecco come ridimensionare in modo uniforme alcune viste sull'asse verticale:
Questo centro 4 mostra l'asse x e vincola la larghezza a 150 punti. L'altezza sarebbe quindi calcolata in funzione dell'altezza del self.view

#import "UIView+AutoLayout.h" 

... 

- (void)spaceViews 
{ 
    NSArray *views = @[ [self spacedView], [self spacedView], [self spacedView], [self spacedView] ]; 

    [self.view spaceViews:views onAxis:UILayoutConstraintAxisVertical withSpacing:10 alignmentOptions:0]; 
} 

- (UIView *)spacedView 
{ 
    //Create an autolayout view 
    UIView *view = [UIView autoLayoutView]; 

    //Set the backgroundColor 
    [view setBackgroundColor:[UIColor redColor]]; 

    //Add the view to the superview 
    [self.view addSubview:view]; 

    //Constrain the width and center on the x axis 
    [view constrainToSize:CGSizeMake(150, 0)]; 
    [view centerInContainerOnAxis:NSLayoutAttributeCenterX]; 

    //Return the view 
    return view; 
} 
+0

Assicuratevi di controllare il mio fork di quel progetto, che ri-progetta e pulisce l'API e comprende molto di più funzionalità (compresi molti metodi per limitare gli array di visualizzazioni): https://github.com/smileyborg/UIView-AutoLayout – smileyborg

0

ho avuto un requisito per aggiungere viste da un array a una ScrollView per le mie pagine di tutorial, in questo caso ho costruito la stringa VFL dai loop attraverso i punti di vista , sotto c'è un'istantanea, questo codice è per adattarsi completamente alla sottoview nella pagina di scrollview. Con alcune modifiche, è possibile aggiungere padding, ecc. Comunque, postarlo qui in modo che aiuti qualcuno.

codice completa arrayAutolayout

/*! 
Create an array of views that we need to load 
@param nil 
@result creates array of views and adds it to scrollview 
*/ 
-(void)setUpViews 
{ 
    [viewsDict setObject:contentScrollView forKey:@"parent"]; 
    int count = 20;//Lets layout 20 views 
    for (int i=0; i<=count; i++) { 
     // I am loading the view from xib. 
     ContentView *contenView = [[NSBundle mainBundle] loadNibNamed:@"ContentView" owner:self options:nil][0]; 
     contenView.translatesAutoresizingMaskIntoConstraints = NO; 
     // Layout the text and color 
     [contenView layoutTheLabel]; 
     [contentScrollView addSubview:contenView]; 
     [viewsArray addObject:contenView]; 
    } 
} 
/*! 
Method to layout the childviews in the scrollview. 
@param nil 
@result layout the child views 
*/ 
-(void)layoutViews 
{ 
    NSMutableString *horizontalString = [NSMutableString string]; 
    // Keep the start of the horizontal constraint 
    [horizontalString appendString:@"H:|"]; 
    for (int i=0; i<viewsArray.count; i++) { 
     // Here I am providing the index of the array as the view name key in the dictionary 
     [viewsDict setObject:viewsArray[i] forKey:[NSString stringWithFormat:@"v%d",i]]; 
     // Since we are having only one view vertically, then we need to add the constraint now itself. Since we need to have fullscreen, we are giving height equal to the superview. 
     NSString *verticalString = [NSString stringWithFormat:@"V:|[%@(==parent)]|", [NSString stringWithFormat:@"v%d",i]]; 
     // add the constraint 
     [contentScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:verticalString options:0 metrics:nil views:viewsDict]]; 
     // Since we need to horizontally arrange, we construct a string, with all the views in array looped and here also we have fullwidth of superview. 
     [horizontalString appendString:[NSString stringWithFormat:@"[%@(==parent)]", [NSString stringWithFormat:@"v%d",i]]]; 
    } 
    // Close the string with the parent 
    [horizontalString appendString:@"|"]; 
    // apply the constraint 
    [contentScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:horizontalString options:0 metrics:nil views:viewsDict]]; 
} 

Di seguito si riporta la stringa creata

H:|[v0(==parent)][v1(==parent)][v2(==parent)][v3(==parent)][v4(==parent)][v5(==parent)][v6(==parent)][v7(==parent)][v8(==parent)][v9(==parent)][v10(==parent)][v11(==parent)][v12(==parent)][v13(==parent)][v14(==parent)][v15(==parent)][v16(==parent)][v17(==parent)][v18(==parent)][v19(==parent)][v20(==parent)]| 
Problemi correlati