2013-03-20 3 views
2

Я не могу изменить местоположение UISegmentedControl. Если бы я это сделать:iOS UISegmentedControl не может позитивно программировать

segControl2.frame = CGRectMake(segControl1.origin.x, segControl2.origin.y, segControl2.size.width, segControl2.size.height); 

на самом деле ничего не меняется, и все говорят, что изменения кадра управления должны это сделать, но это на самом деле нет.

+0

проверить ответ с высоким голосом в этом вопросе. ответ содержит хороший способ добавления uisegment к представлению через код. http://stackoverflow.com/questions/6688160/how-to-programmatically-add-a-uisegmentedcontrol-to-a-container-view –

+0

Вы добавили subview ?? – NULL

+0

Возможно, что-то еще влияет на размещение вашего сегментированного элемента управления. Пожалуйста, поделитесь еще несколькими кодами. – Aaron

ответ

1
CGRect frame = [[UIScreen mainScreen] bounds]; 
UISegmentedControl *segControl = [[UISegmentedControl] initWithItems:[NSArray alloc] initWithObjects:@"One", @"Two", @"Three", nil]; 
segControl.frame = CGRectMake(frame.origin.x + 50, frame.origin.y + 50, segControl.size.width, segControl.size.height); 
[view addSubview:segControl]; 

Должно работать нормально.

+0

Что делать, если у меня есть элемент управления, который уже был создан в nib, я не создаю его в коде. Почему изменение рамки не будет делать трюк? – user1405583

0

Для изменения положения любого элемента после того, как вы добавили в подвид, вы можете использовать следующее:

CGRect frame = segControl2.frame; 
frame.origin.x = segControl1.frame.origin.x; 
// for changes to other properties, do likewise. if no changes, don't do anything 
frame.origin.y = ... 

segControl2.frame = frame; 
+0

Это не работает для меня. При отладке я иду по очереди, поэтому я могу ясно видеть, что frame.origina.x действительно изменяется после того, как я установил x на меньшее значение, перемещая элемент управления вправо, но ничего не происходит, управление не перемещается. У меня есть элемент управления, созданный в nib, и я делаю код в методе viewDidLoad. – user1405583

+0

Это странно. Я использовал этот метод для размещения почти всех моих элементов, которые создаются в раскадровке или программно. Возможно, ваша проблема заключается не в коде, а в параметрах, которые установлены в IB или где вы размещаете UISegmentedControl. – Rick

+0

Я могу изменить UISegmentedControlStyle, используя те же свойства элемента управления, поэтому я думаю, что он правильно подключен. – user1405583

0

Это может быть «Auto-Layout», вы можете попробовать создать свой UISegmentedControl программно вместо ,

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