2009-06-29 4 views
1

Я добавил некоторые кнопки в UIView (через addSubview) программно. Однако они отображаются как оверлеи (так что я всегда вижу только последнюю кнопку). Как добавить новые кнопки ниже существующих кнопок?Добавление нескольких UIButtons в UIView

С уважением

+0

Не могли бы вы прояснить этот вопрос, заявив, какую ось вы имеете в виду, когда вы говорите, «ниже» ? – teabot

+0

Да, я имел в виду ось y. – Stefan

ответ

4

можно компенсировать кнопку, как этот

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

и либо установить рамки для новой кнопки при ее создании:

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

или установить кадр позже

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

Какое совпадение я сделал в одно и то же время одновременно ;-) Вот мой: roundedButton.frame = CGRectMake (previousFrame.origin.x + previousFrame.size.width + 5, 0, 200,30); Спасибо! – Stefan

3

Установите кадр происхождения в UIView, чтобы макет в UIButtons в местах, которые вы хотите:

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

Вам нужно добавить «button.frame = buttonFrame;» после строки 2 или 3, чтобы сделать эту работу. В противном случае вы просто изменяете копию прямоугольника рамки. –

+0

@eJames - Хороший звонок – teabot

2

Вы можете использовать либо insertSubview: метод atIndex или insertSubview: belowSubview вашего зрения.

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

[myView insertSubview:myButton belowSubview:previousButton]; 

ИЛИ

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

Я не знал, относится ли Стефан к оси Y или Z, но между нами мы рассмотрели оба. – teabot

+0

Не мог этого и понять, но, как вы сказали, мы позаботились обо всех. –

0

Спасибо за ваши ответы, ребята.

я сделал (по горизонтали) совместите с этим кодом:

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

Он работает технически, но по-прежнему перекрывает кнопки. Я должен найти способ, как не накладывать их ...

+0

Что вы имеете в виду наложение кнопок? –

+0

Они отображаются визуально как одна кнопка, потому что они все еще находятся в одном и том же положении (0.0, 0.0). Итак, моя цель - получить новую начальную позицию из предыдущего UIButton ([myContainer.subviews lastObject]). Я думаю, что это как-то связано с рамкой UIButtons. Но я не знаю, как получить позиции. – Stefan

Смежные вопросы