как показать содержимое просмотра, которое будет отображаться справа в приложении iPhone

У меня есть приложение для айфона.

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

subView содержит UIButton и TextView. Я хочу, чтобы subView загружался в анимацию, как слайд слева.


person user1567956    schedule 07.08.2012    source источник


Ответы (3)


Перевернуть вид можно следующим образом:

    [UIView animateWithDuration:1 animation:^{
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.subView cache:FALSE];
}];

Вот мой полный код:

- (void) flipCard {

if (_isDisplayBackOfCard) {

    [UIView animateWithDuration:.5 animations:^{

        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:FALSE];
        [self.backOfCard removeFromSuperview];
        [self.view addSubview:self.frontOfCard];

    } completion:^(BOOL finished){
        _isDisplayBackOfCard = !_isDisplayBackOfCard;
    }];
}
else {

    [UIView animateWithDuration:.5 animations:^{

        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:FALSE];
        [self.frontOfCard removeFromSuperview];
        [self.view addSubview:self.backOfCard];

    } completion:^(BOOL finished){
        _isDisplayBackOfCard = !_isDisplayBackOfCard;
    }];
}

}

Вставить вид можно легко, установив кадр вида внутри блока анимации:

CGRect _newFrame = CGRectMake(someValueForX, someValueForY, someValueForWidth, someValueForHeight);

    [UIView animateWithDuration:.5 animations:^{ [self.subView setFrame:_newFrame];}];
person bennythemink    schedule 07.08.2012
comment
Я предполагаю, что вы не создаете и не устанавливаете переменную _newFrame? Я отредактировал код выше, чтобы показать вам. Просто замените значения x, y, ширины и высоты на те, которые вам нужны, и убедитесь, что вы ссылаетесь на правильное вспомогательное представление. - person bennythemink; 07.08.2012
comment
int someValue для X и y мне нужно указать значения для x y подвида - person user1567956; 07.08.2012

Вы можете сделать это, добавив subView в методе представления viewDidLoad, а в методе viewDidAppear вы можете использовать анимацию с помощью инструкции блока, чтобы придать ей некоторую анимацию.

Удачного кодирования :)

ИЗМЕНИТЬ 1

Здесь я добавил scrollView в XIB, прикрепив к нему IBOutlate. Вы можете программно добавить его в метод viewDidLoad.

Сначала я делаю View скрытым, применяя эту рамку

subCatScroll.frame = CGRectMake(320, 0, 91, 436);

и при нажатии какой-то кнопки я показываю это через анимацию (она исходит от правого края iPhone)

- (IBAction)done:(id)sender
{
    [Appirater userDidSignificantEvent:YES];
    if(pointer.hidden == YES)
    {
        [UIView beginAnimations:@"Move Me To Unhide" context:nil];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
        [UIView setAnimationDuration:kAnimationDur];
        subCatScroll.frame = CGRectMake(229,0,91,436);
        [UIView setAnimationDelegate:self];
        [UIView commitAnimations];
        [self configureView];
        pointer.hidden = NO;
    }
    else
    {
        [UIView beginAnimations:@"Move Me To Hide" context:nil];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
        [UIView setAnimationDuration:kAnimationDur];
        subCatScroll.frame = CGRectMake(320, 0, 91, 436);
        [UIView setAnimationDelegate:self];
        [UIView commitAnimations];        
        pointer.hidden = YES;
    }
}

Здесь pointer — это один элемент управления, который используется для решения, что делать с scrollView.

person The iOSDev    schedule 07.08.2012
comment
Если вам нужно какое-то руководство по кодированию, просто спросите об этом :) - person The iOSDev; 07.08.2012
comment
да, мне нужно руководство по коду, я просто хочу показать и скрыть и просмотреть с обратной стороны при нажатии кнопки - person user1567956; 07.08.2012
comment
сначала в viewDidLoad поместите первую строку, а в методе viewDidAppear поместите остальную часть кода, но используйте код [UIView animateWithDuration:.5 animations:^{//IF part or to show} completion:^(BOOL finished){//Else part or to hide}]; для автоматического выполнения анимации, вы можете установить продолжительность по мере необходимости вместо .5 :) - person The iOSDev; 07.08.2012

В ПОРЯДКЕ. Если вы хотите добавить свои subViews (не представление контейнера - я предсказал это по вашему вопросу!) со скользящей анимацией, выполните следующие действия:

  1. Создайте IBOutlet для своей кнопки и текстового представления
  2. synethesize их в файле .m.
  3. Напишите следующий код -

        - (void)viewWillAppear:(BOOL)animated
    {
    
        self.btn.center = CGPointMake(-430.0, 211.0);
    
        self.txtView.center = CGPointMake(-430.0, 120.0);
    
        [self addSubview:self.btn andMoveTo:CGPointMake(115.0, 211.0) duration:1.0 option:UIViewAnimationOptionCurveLinear];
    
        [self addSubview:self.txtView andMoveTo:CGPointMake(40.0, 34.0) duration:1.0 option:UIViewAnimationOptionCurveLinear];
    
    }
    
    
    - (void) addSubview:(UIView*)view 
              andMoveTo:(CGPoint)destination 
               duration:(float)secs 
                 option:(UIViewAnimationOptions)option
     {
        [UIView animateWithDuration:secs delay:0.0 options:option
                    animations:^{
                        view.frame = CGRectMake(destination.x,destination.y, view.frame.size.width, view.frame.size.height);
                            }completion:nil];
        [self.view addSubview:view];
    
    }
    
person Nayan    schedule 07.08.2012