首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CATransform3DRotate后的视图裁剪

CATransform3DRotate后的视图裁剪
EN

Stack Overflow用户
提问于 2017-01-13 11:38:22
回答 1查看 121关注 0票数 1

我试图将透视转换应用于一个视图(让我们称它为subview),该视图只沿其框架绘制一个正方形,在其superview中以水平方向居中,并且是其superview宽度的3/4:

我在用这个片段:

代码语言:javascript
复制
var rotationAndPerspectiveTransform = CATransform3DIdentity
rotationAndPerspectiveTransform.m34 = CGFloat(-1.0/280.0)
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 30.0 * CGFloat.pi / 180.0, 1.0, 0.0, 0.0)
subview.layer.transform = rotationAndPerspectiveTransform

它完成了我需要的转换,但是有一个奇怪的效果--矩形的右侧是“剪裁”的:

是什么引起的?我怎么才能避免呢?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-13 14:01:51

啊,这是一个很好的边界和帧的问题。框架在转换后变得更宽,不再适合于边界。

由于我仍然希望它是以水平为中心的,所以这个剪贴画做到了这一点:

代码语言:javascript
复制
let transformedFrame  = segmentView.layer.frame
let transformedBounds = segmentView.layer.bounds
let correctedBoundsX  = (transformedFrame.width - transformedBounds.width) / 2

segmentView.layer.bounds = CGRect(x: correctedBoundsX, y: transformedBounds.origin.y, width: transformedBounds.width, height: transformedBounds.height)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41633810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档