【问题标题】:UIView rotated by 45° disappears?旋转 45° 的 UIView 消失了吗?
【发布时间】:2012-03-03 15:06:44
【问题描述】:

也许我不明白。当我这样做时

self.tweetPeak.transform = CGAffineTransformMakeRotation(RADIANS(45));

RADIAN 在哪里

#define RADIANS(degrees) ((degrees * M_PI) / 180.0)

在一个简单的 UIView 对象上它会消失。

我想这只是太薄了。我的印象是视野在 20 到 45 度之间变得越来越小。

这是什么?我试图将视图设置为不透明。没有效果。

克里斯

【问题讨论】:

  • 它是否有可能被旋转出屏幕?
  • 不相关,但RADIONS 是一个可怕的名字。它没有说明它在做什么或如何使用它。
  • @Paul.s 这是风格问题,IMO,这是一个很好的宏名称,但我看到它标记为TO_RADIANSDEGREES_TO_RADIANS 等等。这真的取决于你需要什么。
  • 好吧RADIANS 太模棱两可了,我应该给它radions或标准化值或度数。它是否返回弧度从弧度转换为度数,将其存储在某个地方......谁知道。 DEGREES_TO_RADIANS 似乎是最具描述性的
  • 我也试过你的#define 和一个普通的 UIView 并且一切正常,也许还有另一个问题。

标签: objective-c ios uiview cgaffinetransform


【解决方案1】:

您需要在旋转后停止调整框架,这会导致对变换矩阵的不必要拉伸,我不确定正式原因,但这与 Apple 使用自己的矩阵系统而不是传统矩阵有关表示 2D/3D 平移/旋转/比例。前几天我遇到了同样的问题,为了解决它,我没有旋转那个视图,而是把它做成了一个容器,里面有我想要旋转的实际视图,然后旋转它。

【讨论】:

  • CGAffineTransform 和 CATransform3D 是绝对标准的传统矩阵。苹果在那里并没有做任何奇怪的事情。您的问题是-[CALayer frame] 是一个派生 值——它基于positionboundsanchorPointtransform 属性。如果你改变变换,框架就会改变。如果您随后尝试更改框架,图层将尝试调整位置和 bounds.size 以使其正常工作。解决方法:不要设置框架。
  • 如果 CATransform3D 是传统矩阵,为什么我无法设置,比如传统正交矩阵,但仍然可以看到我的图层?还是那方面的观点?我的意思是我并不怀疑你,但他们并没有完全使用它,为什么 .m34 控制类似于 FOV 的东西?如果你问我,这些都不是很标准。但我可能是错的。
  • 我一直在寻找相当多的东西来解决这个问题。你的两个 cmets 真的帮助我理解了我的问题。对于遇到此问题的其他任何人...我进行了一些初始化,我希望在其中旋转一些标签。我在 viewDidLoad 中有这个...我必须将它移动到 viewDidAppear 才能正常工作(因为框架仍在设置,直到 viewWillAppear 之后)。
【解决方案2】:

对我来说,解决方案是将 imageView 内容模式设置为 .center

imageView.contentMode = .center

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多