2013-04-09 4 views
0

Je pense que les 2 étiquettes, la plus grande et la plus petite sont juste positionnées au centre de l'écran. Changer les coordonnées ne semble pas avoir d'effet sur l'endroit où elles sont placées. Pourquoi?comment positionner UILabels dans ios6?

Idéalement, je voudrais qu'ils soient de la même taille, pas de chevauchement et l'un en dessous de l'autre de sorte qu'ils couvrent presque tout l'écran.

Je pensais que le labelframe utilise le format - coodinates de départ, taille. Où est mon origine? est en haut à gauche de l'écran? Puis-je le traduire en xcode?

#import "ViewController.h" 

@interface ViewController() 
@property (nonatomic, strong) UILabel *label; 
@property (nonatomic, strong) UILabel *label1; 

@end 

@implementation ViewController 

- (void)viewDidLoad{ 
    [super viewDidLoad]; 
    self.view.backgroundColor = [UIColor whiteColor]; 
    CGRect labelFrame = CGRectMake(-200.0f,0.0f, 200.0f, 200.0f); 
    self.label = [[UILabel alloc] initWithFrame:labelFrame]; 
    //self.label.adjustsFontSizeToFitWidth = YES; 
    self.label.text = @"One two three four five six seven eight nine."; 
    self.label.font = [UIFont boldSystemFontOfSize:28.0f]; 
    self.label.numberOfLines = 5; 
    self.label.center = self.view.center; 
    [self.view addSubview:self.label]; 

    CGRect labelFrame1 = CGRectMake(600.0f,600.0f, 100.0f, 100.0f); 
    self.label1 = [[UILabel alloc] initWithFrame:labelFrame1]; 
    self.label1.text = @"One 1 two three four five six seven eight nine."; 
    self.label1.font = [UIFont boldSystemFontOfSize:18.0f]; 
    self.label1.numberOfLines = 0; 
    self.label1.center = self.view.center; 
    [self.view addSubview:self.label1]; 



} 

@end 

Répondre

0

Origine 0,0 est le coin supérieur gauche de l'écran superview. Si vous voulez que les étiquettes au centre de l'écran, l'un sur l'autre, vous pouvez le faire:

self.label = [[UILabel alloc] init]; 
// setup label text, font.. 
[self.label sizeToFit]; // automatically set the appropriate size 
self.label.center = self.view.center; 
[self.view addSubview:self.label]; 

self.label1 = [[UILabel alloc] init]; 
// setup label text, font.. 
[self.label sizeToFit]; // automatically set the appropriate size 
self.label1.center = self.view.center; // set at center of screen 
// just overwrite origin.y to set it below the previous label 
self.label1.frame = (CGRect) { self.label1.frame.origin.x, self.label.frame.origin.x + self.label.frame.size.height, self.label1.frame.size }; 
[self.view addSubview:self.label1]; 

Mise à jour: en fonction de votre commentaire, pour l'avoir deux lignes, une colonne est plus facile. Il suffit de définir le cadre pour être pleine largeur et demi hauteur:

self.label = [[UILabel alloc] initWithFrame:CGrectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height/2]; 
self.label1 = [[UILabel alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height/2, self.view.frame.size.width, self.view.frame.size.height/2]; 
+1

L'origine 0,0 est relative à la vue parent de la sous-vue, pas à l'écran. Le centre de l'écran et le centre de 'self.view' ne sont probablement pas le même endroit. – rmaddy

+0

Je veux fondamentalement que les deux étiquettes soient comme une matrice de 2 lignes et 1 colonne, l'une en dessous de l'autre, de sorte qu'elles couvrent l'écran entier –

+0

user494461 J'ai édité ma réponse pour faire ceci. @rmaddy J'ai aussi corrigé la chose d'origine. Merci ! –

0

Vous les origines vous écrasant définies lorsque vous appelez

self.label.center = self.view.center