Элементы управления в UIActionSheet расположены неправильно - PullRequest
0 голосов
/ 20 марта 2010

Мне нужно отобразить всплывающее окно с помощью UISwitch и кнопки «Готово», когда пользователь нажимает кнопку, и сохранять состояние переключателя при нажатии кнопки «Готово» во всплывающем окне.

Поэтому я использую UIActionSheet , чтобы сделать это -

sheet = [[UIActionSheet alloc] initWithTitle:@"Switch Setting" 
                                              delegate:self
                                     cancelButtonTitle:nil
                                destructiveButtonTitle:nil
                                     otherButtonTitles:@"Done", nil];

theSwitch = [[UISwitch alloc] init];
[sheet addSubview:theSwitch];
[sheet showInView:self.view];


- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == actionSheet.firstOtherButtonIndex)
    {
      theSwitch .on? NSLog(@"Switch is on") : NSLog(@"Switch if off");
    }
}

Все это прекрасно работает. У меня проблема с позиционированием . К сожалению, на данный момент у меня нет скриншота, чтобы публиковать здесь. Но переключатель появляется в самом верху в той же строке с заголовком «Лист действий», а затем под кнопкой «Готово».

Пожалуйста, кто-нибудь, помогите мне, как расположить переключатель под заголовком и увеличить размер листа действий, чтобы он выглядел аккуратно. Мне нужно это как можно скорее. Благодарю.

Ответы [ 2 ]

0 голосов
/ 17 мая 2013

Я думаю, у вас есть возможность сделать это, изменив кадр UISwitch как trumi, описанный выше. Если вы хотите разместить UIButton с изображением, то здесь - недокументированный вариант. Недокументированное, поэтому риск отказа.

Также вы найдете много других вариантов украшения в той же теме

0 голосов
/ 28 марта 2010

Вы можете установить рамку переключателя.

Для позиционирования переключателя в середине экрана предупреждения

theSwitch = [[UISwitch alloc] init];
[sheet addSubview:theSwitch];
[sheet showInView:self.view];

// get the dimension of the sheet to position the switch
CGSize parentSize  = sheet.frame.size;
CGRect rect = theSwitch.frame;
rect.origin.x = parentSize.width/2.0 - rect.size.width;
rect.origin.y = parentSize.height - rect.size.height - <some space from the bottom>;
theSwitch.frame = rect;

Важно, чтобы вы установили переключатель после вызова showInView для листа. В противном случае размер листа равен нулю. Если вы замените, вы можете добавить то же место внизу.

Надеюсь, это поможет

...