Я пытаюсь применить маску к виду бэкэнда, но не могу достичь своего ожидания. Я хочу, чтобы представление выглядело как показано на рисунке ниже. Я попытался реализовать по-своему, но вид маски также появляется снизу. Когда мы щелкаем по опции iCloud в iPad сразу, бэкэнд-просмотр становится серым, а снизу открывается пользовательский вид. Я хочу, чтобы одна и та же функция была реализована в моем приложении. Пожалуйста, помогите мне. Заранее спасибо.Как применить маску к виду бэкэнда?
ответ
Я настоятельно рекомендую вам использовать этот красивый и аккуратный код GIT
https://github.com/jmascia/KLCPopup
KLCPopup действительно делает очень хорошую работу в реализации модальных представления с анимацией, размытие, замирание и т.д.
Очень легко настроить и использовать, это просто
«выберите вид»
"выбрать, где вы хотите его"
"Добавить эффекты, если вы хотите, чтобы некоторые"
"вы идете"
весело;)
Большое спасибо! его действительно хорошая статья. –
Следуйте ниже шагов, чтобы достичь своей requirements-
1) Создать BaseView & Добавить CustomView в центре BaseView.
2) Установите цвет фона BaseView как черный с непрозрачностью 50%.
3) Держите фактическое преобразование CustomView в переменной, как
CGAffineTransform m_actualTransformOfCustomView =
m_customView.transform;
4) Масштабирование CustomView к небольшому 0,01, 0,01, используя
self.m_customView.transform = CGAffineTransformScale(m_actualTransformOfCustomView, 0.01, 0.01);
4) использование [UIView amimateWithDuration:]
API для изменения преобразование пользовательского вида в оригинальное as-
[UIView animateWithDuration:0.5f
delay:0
options:UIViewAnimationOptionCurveEaseOut
animations:^
{
self.m_customView.transform = CGAffineTransformScale(m_actualTransformOfCustomView, 1.0, 1.0);
}
completion:^(BOOL finished)
{
}
];
}
Мой собственный путь работает теперь правильно. Вот фрагмент кода. Наслаждайтесь!
-(IBAction)show:(id)sender{
customView = [[UIView alloc] initWithFrame:self.view.frame]; // Mask View
customView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.3f];
[self.view addSubview:customView];
// customConfigurationView // PopUp view
CGRect frameCustmVw = customConfigurationView.frame;
frameCustmVw.origin.y = self.view.frame.size.height;
frameCustmVw.origin.x = 134;
customConfigurationView.frame = frameCustmVw;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
frameCustmVw.origin.y = 200;
customConfigurationView.frame = frameCustmVw;
[self.view addSubview:customConfigurationView];
[UIView commitAnimations];
[txtClientID becomeFirstResponder];
}
-(IBAction)remove:(id)sender{
[customView removeFromSuperview]; // Remove mask view
CGRect CustmFrame = customConfigurationView.frame;
CustmFrame.origin.y = 200;//self.view.frame.size.height - customConfigurationView.frame.size.height;
customConfigurationView.frame = CustmFrame;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CustmFrame.origin.y = self.view.frame.size.height;
customConfigurationView.frame = CustmFrame;
[UIView commitAnimations];
}
oky, мой ответ о пути как приложение настройки делает это, это просто ...они просто представляя навигационный контроллер, вот и все, например
просто создать подкласс вид контроллера, например (я назвал его TestViewController
) и установить его размер, чтобы freeform
в и изменить ширину и высоту рамы для ваших требуемых значений и добавить вид компонентов
будет показывать контроллер с шириной и высотой 540 * 620 с анимацией
все в
- (IBAction)presentAction:(id)sender
{
TestViewController *testVc = [[TestViewController alloc]initWithNibName:@"TestViewController" bundle:nil];
UINavigationController *aNavController = [[UINavigationController alloc] initWithRootViewController:testVc];
aNavController.modalPresentationStyle = UIModalPresentationFormSheet;
aNavController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:aNavController animated:YES completion:nil];
}
что вы пробовали/исследовали, что сделали? Что делает ваше решение неправильным? – Wain
@Wain, Спасибо за ответ! Я добавил ответ ниже. –