пытается вытащить новый UIView из-за UIButton ising UIAnimation - PullRequest
0 голосов
/ 27 октября 2011

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

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

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

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

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

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

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

T *

Ответы [ 3 ]

2 голосов
/ 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];
}
}

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

2 голосов
/ 27 октября 2011

@ 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
1 голос
/ 27 октября 2011

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

Вот отличное руководство по UIPopOverController от Ray Wenderlich:
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 для iphone", вы получите несколько уроков и предложений.

...