gpt4 book ai didi

ios - 在 UIAlertController 中禁用视差 iOS

转载 作者:可可西里 更新时间:2023-11-01 17:17:09 26 4
gpt4 key购买 nike

我正在开发的应用程序仅支持纵向模式。但是,在 iOS8 中,现在已弃用的 UIAlertView 可以进入横向并显示其他一些小问题。为了解决这个问题,我决定尝试一下 UIAlertController。它有效,但我有一个新问题仍然有点烦人。警报不再进入风景,但它确实具有视差运动的特点。我在 UIAlertController 的 View 中添加了一个标签和一个图像,但它们没有视差功能,这意味着当用户四处移动手机时它看起来很奇怪。

我正在寻找两个选项,但找不到其中任何一个的操作方法。
第一个解决方案是禁用视差功能,看看我们如何在应用程序的任何地方不支持它。
第二种解决方案是为标签和图像添加视差支持。
无论如何,这是一段代码:

UIAlertController *welcomeAlertController = [UIAlertController
alertControllerWithTitle:[NSString stringWithFormat:NSLocalizedString(@"Would you like to send %@ a message?", @"This message is displayed after adding a new message receiver. The %@ is the name of the receiver."), self.receiver.name]
message:@"\n\n\n\n\n\n\n\n"
preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *cancelAction = [UIAlertAction
actionWithTitle:NSLocalizedString(@"Skip", @"Skip: meaning user can skip a certain step.")
style:UIAlertActionStyleCancel
handler:^(UIAlertAction *action)
{
[self cancelButtonPressed];
}];

UIAlertAction *okAction = [UIAlertAction
actionWithTitle:NSLocalizedString(@"Send", @"Send: meaning user can send information to somewhere.")
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action)
{
[self sendButtonClicked];
}];

[welcomeAlertController addAction:cancelAction];
[welcomeAlertController addAction:okAction];

smsView.frame = CGRectMake(20, 80, 240, 95);
messageBackgroundView.frame = CGRectMake(0, 0, 240, 80);

warningLabel.frame = CGRectMake(20, 170, 240, 40);
warningLabel.textColor = [UIColor blackColor];

[welcomeAlertController.view addSubview:smsView]; // An UIView
[welcomeAlertController.view addSubview:warningLabel];

[self presentViewController:welcomeAlertController animated:YES completion:nil];

最佳答案

为 View 添加视差非常简单。它是这样工作的:

UIInterpolatingMotionEffect *horizontalMotionEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x" type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];
horizontalMotionEffect.minimumRelativeValue = @(-30);
horizontalMotionEffect.maximumRelativeValue = @(30);

UIInterpolatingMotionEffect *verticalMotionEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.y" type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis];
verticalMotionEffect.minimumRelativeValue = @(-30);
verticalMotionEffect.maximumRelativeValue = @(30);

UIMotionEffectGroup *group = [UIMotionEffectGroup new];
group.motionEffects = @[horizontalMotionEffect, verticalMotionEffect];
[yourViewHere addMotionEffect:group];

您可能想要使用值 @(30) 来定义它的外观。

据我所知,您无法关闭 UIAlertController 上的视差,您可能希望通过继承 UIView .

关于ios - 在 UIAlertController 中禁用视差 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26484627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com