2009-06-29 11 views
1

J'ai ajouté des boutons à un UIView (via addSubview) par programmation. Cependant, ils apparaissent comme des superpositions (de sorte que je vois toujours le dernier bouton seulement). Comment ajouter de nouveaux boutons sous les boutons existants?Ajout de plusieurs UIButtons à un UIView

Cordialement

+0

Pourriez-vous préciser la question en indiquant quel axe vous faites référence lorsque vous dites « bas » ? – teabot

+0

Oui, je voulais dire l'axe des y. – Stefan

Répondre

4

vous pouvez décaler le bouton comme celui-ci

int newX = previousButton.frame.origin.x + previousButton.frame.size.width ; 
int newY = previousButton.frame.origin.y ; 

et soit définir le cadre pour le nouveau bouton lors de sa création:

[[UIButton alloc] initWithFrame:CGRectMake(newX,newY,100,100)]; 

ou définir le cadre plus tard

newButton.frame = CGRectMake(newX,newY,100,100); 
+0

Quelle coïncidence, j'ai fait une solution similaire en même temps ;-) Voici le mien: roundedButton.frame = CGRectMake (previousFrame.origin.x + previousFrame.size.width + 5, 0, 200,30); Merci! – Stefan

3

l'origine du jeu de cadre de la UIView à la mise en page des UIButtons dans les endroits que vous souhaitez:

CGRect buttonFrame = button.frame; 
buttonFrame.origin = CGPointMake(100.0f, 100.0f); 
button.frame = buttonFrame; 
view.addSubview(button); 
+1

Vous devrez ajouter "button.frame = buttonFrame;" après la ligne 2 ou 3 pour faire ce travail. Sinon, vous modifiez simplement une copie du rectangle du cadre. –

+0

@eJames - Bon appel – teabot

2

Vous pouvez utiliser le insertSubview: méthode atIndex ou insertSubview: belowSubview de votre point de vue.

UIButton *myButton = [[UIButton alloc] initWithFrame:CGRectMake(0,0,100,100)]; 

[myView insertSubview:myButton belowSubview:previousButton]; 

OU

[myView insertSubview:myButton atIndex:0]; 
+0

Je ne savais pas si Stefan faisait référence à l'axe Y ou Z - mais entre nous, nous avons couvert les deux. – teabot

+0

Impossible de comprendre cela non plus, mais comme vous l'avez dit nous avons pris soin des deux. –

0

Merci pour vos réponses les gars.

J'ai fait (horizontal) aligner avec ce code:

if([myContainer.subviews lastObject] == nil){ 
     NSLog(@"NIL"); 
     [myContainer insertSubview:roundedButton atIndex:0]; 
    }else{ 
     [myContainer insertSubview:roundedButton belowSubview:[tagsContainer.subviews lastObject]]; 
    } 

Il fonctionne sur le plan technique, mais recouvre encore les boutons. Je dois trouver un moyen, comment ne pas les superposer ...

+0

Que voulez-vous dire par superposition des boutons? –

+0

Ils apparaissent visuellement comme un bouton, car ils sont toujours sur la même position (0.0, 0.0). Donc, mon but est d'obtenir la nouvelle position de départ du précédent UIButton ([myContainer.subviews lastObject]). Je pense que cela a quelque chose à voir avec le cadre UIButtons. Mais je ne sais pas, comment obtenir les positions. – Stefan