пытаясь выдвинуть новый UIView из-за UIButton ising UIAnimation

Я пытаюсь нажать кнопку меню (UIView, содержащего UIButtons) из-за основного UIButton

Я включил ссылку на изображение, чтобы лучше понять, к чему я клоню (синяя часть, содержащая кнопки, выдвигается из-за основной кнопки при нажатии основной кнопки) -

http://imageshack.us/photo/my-images/27/screenshot20111027at419.png/

Я создал свой UIView и разместил на нем свои кнопки, и он без проблем анимируется. Мой план состоял в том, чтобы разместить кнопки «вне экрана» (относительно системы координат моего UIView), а затем анимировать их так, чтобы UIView встал на место (как комод, UIView изначально полностью скрыт)

Однако кнопки появляются наложенными на исходный UIButton, чего я не хотел;)

Любые предложения? Есть ли способ скрыть UIView в определенных частях основного представления?

Извините за многословность моего вопроса, но я новичок в этом :) Любая помощь очень ценится!

T*


person Octave1    schedule 27.10.2011    source источник


Ответы (3)


@ Octave1

Я не могу комментировать ваш вопрос, но думаю, что было бы полезно, если бы вы смоделировали изображение того, что происходит, по сравнению с тем, что вы хотите увидеть.

В качестве альтернативы, часть вашего кода может помочь нам решить проблему.

Вы можете скрыть вид, который вы не хотите видеть, при анимации меню на месте. Вот пример (извините, если я перепутал ваши взгляды)

/*
 assume buttonMenu is defined
 assume showMenuButton is defined
 assume menuEndFrame is defined 
*/
[UIView beginAnimations:@"ButtonMenu" context:nil];

[UIView setAnimationDuration:0.25];

buttonMenu.frame = menuEndFrame
showMenuButton.alpha = 0.0

[UIView commitAnimations];

Если проблема не в этом, а проблема в иерархии представлений, то вы можете использовать эти 2 метода, чтобы помочь с наслоением.

- (void)bringSubviewToFront:(UIView *)view

- (void)sendSubviewToBack:(UIView *)view
person Jesse Black    schedule 27.10.2011

Спасибо за полезные предложения, в конце концов проблема оказалась в иерархии представлений, это оказалось полезным:

- (void)sendSubviewToBack:(UIView *)view   

Чтобы прояснить, чего я пытался достичь, я включил видео для демонстрации (обратите внимание, что мне нужно было использовать другое представление, чтобы сидеть за моей кнопкой главного меню, чтобы скользящее меню не было частично видно за кнопкой меню, это темно-серый вид нижней половины. Я использовал более темный оттенок серого, чтобы показать положение этого вида)

http://www.youtube.com/watch?v=nllXGh9sSls

Вот часть моего кода для тех, у кого может быть аналогичная проблема:

- (void) setupInterface {
//setting up the main button & the sliding button menu
[self addMyButton];
buttonMenu = [[ButtonMenu alloc] initWithFrame:(CGRectMake(100, 310, 120, 200)) ];
[self.view addSubview:buttonMenu];
[self.view sendSubviewToBack:buttonMenu];

}


- (void)MenuButtonClicked:(id)sender
{
    [self rollOutIn]; //Call Flip BOOL

if (!rollOutMenuButton)
{
//pushing out the menu  
buttonMenu.alpha = 0.0f;            
[UIView beginAnimations:@"MoveView" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDuration:0.8f];
self.buttonMenu.frame = CGRectMake(100, 110, 120, 200);
buttonMenu.alpha = 1.0f;
[UIView commitAnimations];  
}

else 
{
    //pulling the menu back in
    [UIView beginAnimations:@"MoveView" context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    [UIView setAnimationDuration:0.8f];
    self.buttonMenu.frame = CGRectMake(100, 310, 120, 200);
    buttonMenu.alpha = 0.0f;
    [UIView commitAnimations];
}
}

Надеюсь, это поможет кому-то другому :)

person Octave1    schedule 10.11.2011

Это именно тот вариант использования, для решения которого был разработан UIPopOverController. Я предполагаю, что вы пытаетесь изобрести велосипед.

Вот отличный учебник по UIPopOverController от Рэя Вендерлиха:
http://www.raywenderlich.com/1056/ipad-for-iphone-developers-101-uipopovercontroller-tutorial

РЕДАКТИРОВАТЬ: Согласно комментариям и тегам, это вопрос об iPhone, а не iPad. UIPopOverController выходит только для iPad, но есть пара сторонних библиотек, которые предоставляют аналогичные функции для телефона.

Вот один: http://iosdevelopertips.com/open-source/ios-open-source-popover-api-for-iphone-wepopover.html.

Никогда не использовал его, не могу рекомендовать, но, похоже, у него есть поклонники. Погуглив "popover for iphone", вы получите несколько руководств и предложений.

person Dan Ray    schedule 27.10.2011
comment
Разве UIPopOverController не только для iPad? Вопрос помечен как iPhone. - person progrmr; 27.10.2011
comment
@progrmr - Ну да, это только iPad и вопрос с тегом iPhone. Думаю, я исходил из того, что его демонстрационное искусство выложено на симуляторе iPad. - person Dan Ray; 27.10.2011
comment
Да, это для iPhone, но мой симулятор по умолчанию выбирает iPad, который до сих пор был хорош для иллюстративных целей. Я так понимаю, что нет эквивалента для iPhone? - person Octave1; 28.10.2011