2013-11-15 4 views
3

У меня есть краткая информация об общей странице, которая включает в себя щелчок на кнопке совместного доступа, а модальный вид сверху - с некоторыми функциями общего доступа.Модальный вид Прозрачный фон - остановить скрытие нижнего слоя?

Мои проблемы в том, что я хотел бы, чтобы фон модального вида был полупрозрачным и, следовательно, отображал вид снизу. Я установил фоновые свойства модального слоя, и по мере того, как модальная фигура выглядит, слой внизу отображается ненадолго - и выглядит точно так, как мне нужно, - но как только завершение покрытия завершено, фоновый вид скрыт - есть ли какой-либо способ это?

(Использование IOS7, кстати)

Приветствиях

Update - @Tommaso Resti любезно помог мне попытаться выяснить этот вопрос из - объяснить, что я сделал до сих пор - моя главная раскадровка содержит несвязанный uiview с идентификатором «ShareScreenView» - который я бы хотел добавить к моему mainView как прозрачный модальный при нажатии на кнопку. Я связала кнопку как IBAction и добавил следующее к моему методу -

- (IBAction)shareBtn:(id)sender { 


    NSLog(@"clicked"); 



    /* Create your view off the screen (bottom) */ 

    /* NEW EDIT */ 
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone" 
                 bundle: nil]; 
    UIViewController *myModalController = [mainStoryboard instantiateViewControllerWithIdentifier:@"ShareScreenView"]; 

    [myModalController.view setFrame:CGRectMake(0, 568, 320, 568)]; 
// [myModalController.view setFrame: CGRectMake(0, [[UIScreen mainScreen].bounds.size.height], [[UIScreen mainScreen].bounds.size.width], [[UIScreen mainScreen].bounds.size.height])]; 


/* Animate it from the bottom */ 
[UIView animateWithDuration:.5 animations:^{ 
    CGAffineTransform move = CGAffineTransformMakeTranslation(0, -[UIScreen mainScreen].bounds.size.height); 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
    myModalController.view.transform = move; /* UPDATED HERE */ 
    NSLog(@"Atrying"); 
} completion:^(BOOL finished) { 
    NSLog(@"Adid try"); 
    if(finished) { 
     NSLog(@"Animation completed"); 
    } 
}]; 

} 

Но я получаю ошибку на линии -

[myModalController.view setFrame: CGRectMake (0, [[UIScreen В начало ] .bounds.size.height], [[UIScreen mainScreen] .bounds.size.width], [[UIScreen mainScreen] .bounds.size.height])];

, который просто заявляет «ожидаемый идентификатор» со стрелкой, указывающей на высоте (см скриншот ниже)

enter image description here

поэтому я попытался добавить свойства следующим образом -

[myModalController.view setFrame:CGRectMake(0, 568, 320, 568)]; 

сейчас ошибок нет - но ничего не происходит и ошибок нет.

ответ

3

Я предлагаю использовать по-своему:

что-то вроде этого:

/* Create your view off the screen (bottom) */ 

/* NEW EDIT */ 
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" 
                bundle: nil]; 
UIViewController *myModalController = [mainStoryboard instantiateViewControllerWithIdentifier:@"MyModalController"]; 
[myModalController.view setFrame: CGRectMake(0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)]; 
[self.view addSubview: myModalController.view]; /* UPDATED HERE! */ 


/* Animate it from the bottom */ 
[UIView animateWithDuration:.5 animations:^{ 
    CGAffineTransform move = CGAffineTransformMakeTranslation(0, -[UIScreen mainScreen].bounds.size.height); 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
    myModalController.view.transform = move; /* UPDATED HERE */ 
} completion:^(BOOL finished) { 
    if(finished) { 
     NSLog(@"Animation completed"); 
    } 
}]; 

чем удалить с этой анимации:

/* Reset animation */ 
[UIView animateWithDuration:.5 animations:^{ 
    CGAffineTransform reset = CGAffineTransformIdentity; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
    myModalController.view.transform = reset; /* UPDATED HERE */ 
} completion:^(BOOL finished) { 
    if(finished) { 
     NSLog(@"Reset completed"); 
     [myModalController.view removeFromSuperview]; 
    } 
}]; 

--- EDITED --- К сожалению, я забыл добавить ".view" после того, как myViewController. Я никогда не пробую свой код ... моя ошибка;)

Пример обновляется!

+0

прохладные веселит - я могу использовать этот метод с раскадровки? Я еще никогда не использовал Nibs! – Dancer

+0

уверен!Использовать UIViewController * myModalController = [storyboard instantiateViewControllerWithIdentifier: @ "MyModalController"]; вместо UIViewController myModalController = [[UIViewController allor] initWithNibName: @ "MyModalController": [NSBundle mainBundle]]; –

+0

классные приветствия - одна проблема - я получаю сообщение об ошибке 'свойство transform, не найденное на UIViewController в этой строке - myModalController.transform = move; – Dancer

0

Вы можете создать представление, в которое вы входите снизу, а затем сделайте вид полупрозрачным.

0

Вы можете использовать вид контейнера, чтобы создать свой собственный ModalViewController и делать анимацию так же, как @Tommaso Resti говорит

Смежные вопросы