2013-04-16 6 views
1

Я пытаюсь что-то такое тривиальное! Не могу поверить, что это не работает! Возможно, я что-то пропустил! У меня есть домашняя страница в приложении для iPhone. Я хочу добавить subview, который будет изначально выведен из экрана (т. Е. Скрыт вправо, т.е. его frame.origin.x будет шириной экрана), а затем я хочу анимировать его запись на страницу с помощью флип- горизонтально и частично отображать субвью (примерно половина экрана).Почему рамка UIView не установлена?

[self.mySubview.view setFrame:CGRectMake([[UIScreen mainScreen] bounds].size.width, 0.0, 
               [[UIScreen mainScreen] bounds].size.width, 
               [[UIScreen mainScreen] bounds].size.height)]; 
[self.view addSubview:self.mySubview.view]; 
NSLog(@"frame before x %f", self.mySubview.view.frame.origin.x); 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 
     [self.mySubview.view setFrame:CGRectMake([[UIScreen mainScreen] bounds].size.width*(2/5), 0.0, 
                 [[UIScreen mainScreen] bounds].size.width, 
                 [[UIScreen mainScreen] bounds].size.height)]; 
[UIView commitAnimations]; 
NSLog(@"frame x %f", self.mySubview.view.frame.origin.x); 

Am пытается запустить это на IPad. Но кадр subview не получает вначале 768.0. Кроме того, анимация не происходит. До и после анимации frame.origin.x в представлении subview равен всего 0.0. Где я мог поступить неправильно? Пожалуйста помоги. Я попытался изменить стрелки автосохранения в раскадровке (удаляя их, добавляя их) ... ничего не работает!

+1

Вы уверены, что иерархия зрения была создана до запуска кода? ** В какой момент ** (в жизненном цикле контроллера) вы выполняете этот код? – Alladinian

+0

В другой заметке вы должны использовать анимацию на основе блоков, а не beginAnimation и commitAnimation. – Rakesh

+0

Спасибо за ваши комментарии. Выполняю этот код, когда на домашней странице нажата кнопка. – Jean

ответ

0

Попробуйте это:

self.mySubview 

instend из

self.mySubview.view 
1

Try This

Someviewcontroller *c = initWithNibName 
    c.view.frame = CGRectMake(0, 0, 200, 200); 
    [self addSubView:c];