问题标签 [catransform3d]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 使用 CATransform3DRotate 时消除锯齿线
我从如何将透视变换应用到 UIView?为了实现下面的图像。但是请注意,锯齿线分隔各个级别。是否有办法以消除锯齿状线条的方式进行这种透视变换?
编辑 我已经在这篇文章的评论中尝试了 DarkDust 提供的解决方案。似乎没有一个工作。这是我的代码:
您在图中看到的级别按钮都是 的实例UIControl
,它们是 的直接子视图UIControl *levelView
。levelView
是正在转变的那个。
DarkDusk 的另外两条评论专门指的是我没有使用的 UIImages。如果它们仍然适用并且有人可以解释如何实施它们,我肯定会试一试。
objective-c - 为什么使用 CATransform3D 进行这种转换会减小视图的宽度?
看看以下图像的进展:
这里发生的事情是首先我选择了“棒球”,导致您看到的 3 个灰色视图向左旋转,以便具有各种级别的视图位于中间(第二张图像)。您可以看到此时视图的宽度已大大减小。第三张图片出现在单击包含运动名称的视图后,使其旋转回中间。
据我所知,当视图旋转到中间时,视图的宽度会减小。但我不知道为什么。
这是相关的代码。pos
指有view
问题的位置。0
表示它在中间,1
表示它在中间右边一个,在中间-1
左边一个,等等。
iphone - 顺序 UIView 转换
我有一个关于将多个转换应用于 UIView 的问题。例如,当我围绕它的中心点对 UIView 的旋转进行动画处理时,然后尝试围绕位于其边界之外的点旋转它,第二个动画全部搞砸了,例如它完全抖动或旋转不同于指定的方式。如何使第一个动画不影响第二个动画,但在播放第二个动画时仍然存在?
编辑:这是代码。首先,我围绕它的中心点旋转视图:
现在图层已旋转,我想将其围绕左屏幕边框翻转:
因为我想要翻转旋转的图层,所以我把CATransform3D bTransform = layer.transform
而不是放在CATransform3D bTransform = CATransform3DIdentity
第二个动画的开头,但同样,这只会使动画混乱
另一个类似的问题是我有一个包含 9 个子视图的 UIView,其中一个每秒围绕它的中心点翻转。但是每次我对这 9 个 UIView 的 superView 应用转换时,子视图的布局就会变得混乱。有谁知道如何防止这种情况?任何帮助将不胜感激。提前致谢!
iphone - 忽略父层变换
我有一个带有 9 个子层的 CALayer,它偶尔会垂直翻转,我CATransform3D
经常这样做。现在,我的问题是,有时,我需要对这 9 层的超级层应用转换。当我这样做时,子层的位置和变换都搞砸了。有没有办法忽略父层的变换,使其不影响子层?
ios - 在动画发生之前旋转 UIView
我想在用动画缩放它之前旋转我的 UIView 子类的实例。不幸的是,我在同一个动画中旋转和缩放的代码。如何在任何缩放动画发生之前完成或强制旋转?
ios5 - 将透视变换应用于 MKMapView
我正在尝试将透视转换应用于MKMapView
. 我正在关注这个 Stackoverflow question的示例,所以我的代码看起来像这样(插入到视图控制器的viewDidLoad
方法中):
编写的这段代码运行良好,我得到了一张应用了透视图的欧洲地图。问题是,如果我减小distance
变量以获得更近的视图,或者甚至从这个工作初始状态放大,地图不会正确放大,它只是缩放地图,因为它处于缩小状态。另一方面,如果我不设置m34
字段transform
,即只倾斜地图而没有透视,它就可以正常工作。
有没有办法获得带有透视的街道地图?
uitableview - 将 UITableView 层细分为层
我想将我的 tableview 层分成两层。像这样,我将能够改变其中之一。我该如何管理?
非常感谢 !
ios - 如何在透视图中围绕其中心旋转平面对象?
我正在尝试做的似乎应该很简单:我创建了一张旧留声机唱片的 2D 自上而下视图。我想在它的 X 轴上旋转它(把它放回去),然后围绕它的 Z 轴旋转它。
我在这里阅读了所有包含 CATransform3D 的问题,我阅读了 Steve Baker 的“矩阵可以成为你的朋友”文章以及 Bill Dudney 的书“Mac OS X 和 iPhone 的核心动画”,我认为 Brad Larson 的“ 3-D Rotation without a trackball”具有所有正确的代码,但由于他允许用户调整所有三个轴,我很难将他的代码缩小到我认为只是一维的(旋转的 z 轴)。
这是我正在测试的图像,并不是说细节对问题很重要:
我以通常的方式将其显示在屏幕上:(在 UIView 的子类中)
这是第一次测试,只是在屏幕上显示 ;-)
然后,为了“放回去”,我应用一个变换来绕图层的 X 轴旋转,在将图层的内容设置为图像之后和添加子图层之前插入此代码:
这按预期工作:记录很好地放回。
对于下一步,导致记录旋转,我将此动画绑定到 touchesEnded 事件,尽管一旦退出测试/学习阶段,此旋转将不受用户控制:
所以我很确定我挂断的是 CATransform3DRotate 调用中的向量(相信我:我一直在尝试对该向量进行简单的更改以观察变化......现在列出的只是最后一次更改我试过)。据我了解,变换中x、y和z的值本质上是动画期间传入的值的百分比,范围从fromValue到toValue。
如果我在正确的轨道上理解这一点,是否可以在一次转换中表达这一点?或者我是否必须为每个有效的动画帧围绕 z 轴稍微旋转原始直立图像,然后通过 x 轴旋转放置结果?我看到一个关于组合变换的问题/答案,但那是一个比例变换,然后是一个旋转变换。我已经搞砸了变换变换,但没有做我认为我应该得到的事情(即将一个变换的结果传递给下一个变换参数似乎只是完全执行一个然后为另一个设置动画)。
cocoa-touch - 为什么从 viewWillAppear 触发时 CATransform3D 不起作用?
在viewWillAppear
我想使用以下转换(Monotouch 代码)调整我的一些视图:
但是,这会导致视图呈现在屏幕的最左侧。如果我将相同的代码放入viewDidAppear
,它就可以工作。我已经检查过所有视图的大小是否有效。
graphics - "renderInContext:" 和 CATransform3D
我有一个里面有多个视图的视图,还有一个图像演示(又名“封面流”)......而且我需要以编程方式制作屏幕截图!
由于文档说“renderInContext:”不会渲染 3d 动画:
“重要此方法的 Mac OS X v10.5 实现不支持整个 Core Animation 合成模型。不渲染 QCCompositionLayer、CAOpenGLLayer 和 QTMovieLayer 图层。此外,不渲染使用 3D 变换的图层,也不渲染指定图层backgroundFilters、filters、compositingFilter 或掩码值。Mac OS X 的未来版本可能会添加对渲染这些层和属性的支持。
我进行了很多搜索,我的“最佳”解决方案(一点都不好)是创建自己的 CGContext 并将所有 CG 动画记录到其中。但我真的不想这样做,因为我需要重新编写我的大部分动画代码,而且这对内存来说非常昂贵......我发现了其他解决方案(其中一些是无法实现的),如使用 openGL 或通过捕获AVSessions,但没有人可以帮助我......
我有什么选择?有这个问题吗?
谢谢你的时间 !