- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个正常工作的页面 curl 。问题是 iPad 的旋转。该应用程序仅横向运行,支持 l 左和 l 右。如果 iPad 是“横向右”,则 curl 会出现在右下角。如果我旋转 iPad, View 会按预期旋转,但现在当我尝试时, curl 发生在左上角。我添加了一个通知,告诉我它何时旋转并尝试更改动画子类型但没有骰子。
-(IBAction)curlViewUp
{
uiv_help.alpha = 1.0;
[UIView animateWithDuration:1.0
animations:^{
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setDuration:0.7];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
animation.type = @"pageCurl";
animation.subtype = curlDirection;
animation.fillMode = kCAFillModeForwards;
animation.endProgress = 0.20;
[animation setRemovedOnCompletion:NO];
[self.view.layer addAnimation:animation forKey:@"pageCurlAnimation"];
[self.view addSubview:uiv_help];
;}
];
}
-(IBAction)curlViewDown
{
uiv_help.alpha = 0.0;
[UIView animateWithDuration:1.0
animations:^{
CATransition *animation = [CATransition animation];
[animation setDelegate:self];
[animation setDuration:0.7];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
animation.type = @"pageUnCurl";
animation.subtype = curlDirection;
animation.fillMode = kCAFillModeForwards;
animation.startProgress = 0.80;
[animation setRemovedOnCompletion:YES];
[self.view.layer addAnimation:animation forKey:@"pageUnCurlAnimation"];
//[self.view removeFromSuperview];
[uiv_help removeFromSuperview];
;}
];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft | interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
-(void)checkRotation:(NSNotification*)notification
{
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if(orientation == UIInterfaceOrientationLandscapeLeft)
{
NSLog(@"UIInterfaceOrientationLandscapeLeft");
curlDirection = @"fromRight";
} else if (orientation == UIInterfaceOrientationLandscapeRight) {
NSLog(@"UIInterfaceOrientationLandscapeRight");
curlDirection = @"fromRight";
}
}
最佳答案
您的 pagecurl 没有随设备旋转。
这是因为它的 View 不随设备旋转而旋转..
这是是因为它的 View 是 View 层次结构中最顶层的 View 。
我在任何地方都找不到这方面的文档(其他人可以挖掘出来吗?),但是 View 层次结构中最外面的 View 不会旋转。我想那是因为正是这个 View 负责旋转其他所有内容(或者更确切地说,这个 View 应用了某种旋转变换)。
验证起来很简单,只需记录 View 的框架和边界并观察旋转时发生的情况。
这里是肖像模式。我已经设置了一个包含在 self.view 中的 subview ,具有相同的尺寸。
self.view frame {{0, 20}, {768, 1004}}
self.view bounds {{0, 0}, {768, 1004}}
self.view center {384, 522}
--------
self.subview frame {{0, 0}, {768, 1004}}
self.subview bounds {{0, 0}, {768, 1004}}
self.subview center {384, 502}
现在让我们旋转到横向
self.view frame {{20, 0}, {748, 1024}}
self.view bounds {{0, 0}, {1024, 748}}
self.view center {394, 512}
--------
self.subview frame {{0, 0}, {1024, 748}}
self.subview bounds {{0, 0}, {1024, 748}}
self.subview center {512, 374}
您会看到内部 subview 正确报告宽度为 1024 和高度为 748 像素。但是外面的景色变得很奇怪。它的框架报告宽度为 748,高度为 1024,就好像它仍然是纵向的(加上状态栏 20px)。但它的界限告诉我们它是风景。
我们显然不想依赖报告这种奇怪结果的 View 的几何属性。我想这与 Apple 的警告有关,即如果 View 的框架受到除恒等变换之外的任何变换,则不应引用 View 的框架。
解决方案是将您的 pagecurling View 嵌入到另一个最外层的 View 中。创建一个新 View ,将其命名为 self.subview(或其他名称),并将其作为 self.view 的唯一 subview 添加到您的 View 层次结构中。将其调整为与 self.view 相同的矩形。在 self.subview 而不是 self.view 上操作。
改变这一行:
[self.view.layer addAnimation:animation forKey:@"pageCurlAnimation"];
到
[self.subview.layer addAnimation:animation forKey:@"pageCurlAnimation"];
并更改这一行:
[self.view.layer addAnimation:animation forKey:@"pageUnCurlAnimation"];
到:
[self.subview.layer addAnimation:animation forKey:@"pageUnCurlAnimation"];
然后您的 curls 将按预期运行,因为您将它们应用到按预期旋转的 View 。
您可以在不更改代码的情况下获得相同的结果,但将您的 viewController 嵌入到 UINavigationViewController 中。在那种情况下,NavViewController 的 View 是不旋转的最外面的 View 。所以你的 self.view 会旋转。
更新
UIWindow* mWindow = [[UIApplication sharedApplication] keyWindow];
UIView *topView = [[mWindow subviews] lastObject];
NSLog("%@",topView);
topView <UILayoutContainerView: 0x71eb450;
frame = (0 0; 748 1024);
transform = [0, 1, -1, 0, 0, 0];
autoresize = W+H; gestureRecognizers = <NSArray: 0x71f8a30>;
layer = <CALayer: 0x71eb540>>
注意变换。
关于page-curl - CATransition 不考虑 iPad 上的方向变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13367022/
我妻子有一台 iPad,我想知道我是否可以用它来开发 iPad 应用程序?我假设答案是否定的。 最佳答案 Apple 的开发指南禁止商店中的此类应用程序,因此不幸的是,您不能使用 iPad 来制作 i
我开发了一个 iPad 应用程序,并为应用程序商店制作了分发配置文件,我需要在 30 台 iPad 上安装我开发的应用程序以进行一次事件,但我无法安装。我收到错误消息:(应用程序“xxxx”未安装在
我正在佛罗里达州开发一款 iPad/iPhone 应用程序,希望纽约的同事能帮我测试一下。纽约的测试人员没有 iMac,因为他们不在该地点进行任何开发。我只是想让他们验证他们所在位置的操作。有什么方法
我可以检测用户(音乐家)手指施加的力或压力吗? 最佳答案 还没有。 有一个技术演示展示了如何做到这一点。见 http://tenonedesign.com/blog/pressure-sensitiv
浏览器分辨率是多少?我已经在谷歌上搜索了一段时间,但不知何故我找不到它! 最佳答案 960x768 或 704x1024 关于ipad - iPad 的屏幕尺寸减去浏览器中的地址栏是多少?,我们在St
我的应用只能在横向使用,并且只能在横向启动。因此,iPad为横向时,左上角为(0,0),因此一切正常。 但是,当我拿起“ touchesBegan” ...时,它无法正常工作。只有当我像正确的三分之二
我在 ionic 中创建输入,它只接受数字。这适用于除 safari 和 ipad 之外的所有浏览器和设备。我不希望用户输入数字以外的任何内容。我尝试对输入事件进行正则表达式验证,但这并不能阻止用户输
是否可以在 iPad 中显示仅包含 0-9 数字的键盘?,我不希望键盘显示任何其他内容。我知道有这个 键盘类型:数字键盘 我们可以在 .xib 文件中,但它显示所有其他额外的字符,包括数字。我想使用这
我正在做一个SproutCore项目。我试图按原样在IPAD上获取该站点,但是CSS背景图像,onClick和重定向在IPAD上不起作用。 让我知道对此的任何解决方案。 最佳答案 在iPad上进行开发
我已经设置了MFMailComposeViewController,它在iPhone上正常工作,但是在iPad上崩溃了,并说: *** Terminating app due to uncaught
iPad:遍历UITableView中的每个单元格吗? 最佳答案 for (int section = 0; section < [tableView numberOfSections]; secti
我在这里寻找两个数字:纵向高度和横向高度。不要以厘米或英寸为单位回答,而以像素为单位。 最佳答案 纵向高度为 264,横向高度为 352。 我知道这是一个迟到的答案,但我自己也遇到了这个问题。 关于i
在我的应用程序中,我想播放Youtube URL(ipad)。我正在使用下面的代码。它只是向我显示一个白色屏幕 YouTube网址是:http://www.youtube.com/watch?v =
据我所知,iPad 使用 iPhone 操作系统,但屏幕分辨率与 iPhone 和 iPod touch 不同。许多网站可能必须更改其用户代理检测以适应 iPad。 那么,任何有权访问 iPad 或
我想预加载多个音频文件。为此,我尝试在JavaScript中创建多个Audio元素。 function loadAudio(){ audio1 = new Audio(); audio
我想使用适用于在所有最新 iPad 上查看的网页的字体。我找到了给定版本的 IOS 附带的字体列表。但这不是我想要的。我更喜欢给定 iPad 实际附带的字体列表,而不是 IOS 版本。如何解决这个问题
是否有可能拥有一个不在应用商店上架的 iPad 单独应用。该应用程序将在某些选定的成员中使用。因此它不需要进入应用商店,因为它不是供公众使用的。 最佳答案 那么有一些众所周知的可能性: Ad Hoc
子像素字体渲染如 ClearType显着提高字体显示分辨率并提高屏幕可读性。我如何对字体的子像素渲染进行编程(一般而言),以及如何在 iPad 上实现这一点(iOS 设备上的 C、C++ 或 Obje
我正在为 9.7 英寸 iPad 设计一个应用程序。我想知道是否有人对为更大的 iPad 设计的应用程序在 iPad mini 上的外观有任何经验?它会自动缩小,以某种方式在较小的屏幕上完美使用吗?还
我正在使用所有 UIKit,并且出于原型(prototype)设计的目的,我刚刚将所有逻辑插入了主 viewController。我在 viewDidLoad 中创建了一些 UIView,隐藏了一些,
我是一名优秀的程序员,十分优秀!