Mise en œuvre mise en page automatique pour les vues générées par programmation
J'ai une application dont les vues sont générées par programmation. Exemple:
-(void)loadView
{
[super loadView];
//SET TOP LEFT BTN FOR NEXT VIEW
UIBarButtonItem *topLeftBtn = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.backBarButtonItem = topLeftBtn;
[topLeftBtn release];
//programmatically set up the view for cart tableView
CGRect iouTableViewFrame = CGRectMake(0, 0, 320, 348);
iouTableView = [[UITableView alloc]initWithFrame:iouTableViewFrame style:UITableViewStylePlain];
[[self iouTableView] setDelegate:self];
[[self iouTableView] setDataSource:self];
[[self view] addSubview:iouTableView];
//set up the summary label
CGRect summaryTableFrame = CGRectMake(0, 348, 320, 18);
UILabel *summaryTableLabel = [[UILabel alloc] initWithFrame:summaryTableFrame];
[summaryTableLabel setFont:[UIFont fontWithName:@"Helvetica" size:14]];
[summaryTableLabel setText:@" Summary"];
UIColor *labelColor = UIColorFromRGB(MiddleBlueColor);
[summaryTableLabel setBackgroundColor:labelColor];
[summaryTableLabel setTextColor:[UIColor whiteColor]];
[[self view] addSubview:summaryTableLabel];
//set up the summary table
CGRect summaryTableViewFrame = CGRectMake(0, 366, 320, 44);
summaryTableView = [[UITableView alloc]initWithFrame:summaryTableViewFrame style:UITableViewStylePlain];
[summaryTableView setScrollEnabled:NO];
[[self summaryTableView] setDelegate:self];
[[self summaryTableView] setDataSource:self];
[[self view] addSubview:summaryTableView];
}
Oui. Je mettrai à jour à Plumes et à utiliser interface builder et storyboard à l'avenir, mais je n'ai pas fait ios de programmation en un an.
Avec le nouvel iPhone 5 d'avoir une autre taille de l'écran, l'application n'a pas l'air bon et j'ai besoin de mettre en œuvre disposition automatique d'une certaine sorte. Est-il un moyen de le faire par programme pour l'instant, au lieu d'utiliser de l'IB?
Merci beaucoup!
OriginalL'auteur okysabeni | 2012-09-26
Vous devez vous connecter pour publier un commentaire.
Oui, il est, en utilisant deux méthodes dans NSLayoutConstraint
Le format visuel de la langue est le tout emballé dans une NSString
Donc je vais prendre votre iouTableView par exemple.
Le pipe "|" représente le superview s edge.
[] Représentent une vue.
Donc, ce que nous avons fait il y avait nous avons accroché le iouTableView de gauche et de droite à gauche et le bord droit de sa superview.
Un autre exemple du format visuel:
Branchez votre vue de la table, résumé de l'étiquette et le tableau récapitulatif à la verticale.
Maintenant ce lien-toutes les trois points de vue à la verticale, sur chacun de leurs bords, NSLayoutFormatAlignAllLeft dit à tous les points de vue de l'aligner à gauche, et ils vont le faire sur la base d'autres contraintes, dans ce cas, la contrainte précédente.
La (le)s sont utilisés pour spécifier la taille de la vue.
Il y a un peu plus comme les inégalités et les priorités ainsi que les "-" spacer " symbole mais découvrez l'apple docs pour que
Edit: Corrigé les exemples d'utilisation constraintsWithVisualFormat comme indiqué dans la signature de la méthode.
NSDictionaryOfVariableBindings(iouTableView, summaryTableLabel, summaryTableView)
au lieu de simplement iouTableView là?Oui, c'est fait, Imma corriger ça maintenant!
Wong est-ce possible aussi avec un UITableView et un UIButton? Lors de l'utilisation de la méthode que j'ai un uncaught NSException c'est déclenché par le bouton [auto.vue addConstraints...]
Vous ne devez pas ajouter des choses dans UITableView qui ne sont pas des cellules/pieds de page/en-têtes/sections etc. Vous êtes mieux de faire quelques-vue-contrôleur de confinement si vous êtes désireux de boutons sur un tableau. Si ce n'est pas la réponse que vous êtes à la recherche pour envisager d'ouvrir une nouvelle question.
OriginalL'auteur David Wong
En plus de Aplle fourni des méthodes que vous pouvez utiliser Parus lib pour l'exploitation avec mise en page automatique de code.
Par exemple, vous serez en mesure de préciser:
Au lieu de
Aussi, vous serez en mesure de regrouper les mises en page des paramètres, mélanger le VFL et pas VFL contraintes.
Parus en mesure de prévenir les erreurs les plus courantes, de se différencier emplacement et paramètres constriaints, et de fournir une grande auto-complétion de soutien.
OriginalL'auteur DAloG