0

我所拥有的是

 UIView
     1.Image1
     2.Image2
     3.UILabel

像下面的图片

在此处输入图像描述

然后我通过做

- (void)viewDidLoad    
    {
        testLabel.transform     =   CGAffineTransformMakeRotation(M_PI*0.25);
        [super viewDidLoad];
    }

当我运行应用程序时,uilabe 毕竟消失了。看第二张图片供您参考

在此处输入图像描述

请指出我在这里做错了什么......以及如何完成工作

谢谢

4

4 回答 4

2

注意,因为自动布局会导致很多问题。

尝试取消选择“使用自动布局”

它解决了我试图翻译对象的所有问题。

于 2012-12-12T17:25:28.617 回答
1

尝试将 PI 乘以一个较小的值,看看它是在旋转还是正在消失。如果我没记错的话,旋转不是基于中心,而是基于左上角,所以你必须事后翻译!

例如,要旋转视频剪辑,我必须这样做:

CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI);
CGAffineTransform translateToCenter = CGAffineTransformMakeTranslation(640, 480);
CGAffineTransform mixedTransform = CGAffineTransformConcat(rotation, translateToCenter);
[firstTrackInstruction setTransform:mixedTransform atTime:kCMTimeZero];

我先旋转了 PI(180 度),但是因为旋转中心是左上角,所以我的视频剪辑现在在相反的象限,需要转换回来!这可能是您的标签正在发生的事情。

所以试试这个,假设你的标签是 42x21 尺寸..

CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI);
CGAffineTransform translateToCenter = CGAffineTransformMakeTranslation(42, 21);
CGAffineTransform mixedTransform = CGAffineTransformConcat(rotation, translateToCenter);
label.transform = mixedTransform;
于 2012-07-11T19:17:17.667 回答
0

尝试将 [super viewDidLoad] 放在首位:

- (void)viewDidLoad    
{
[super viewDidLoad];        
testLabel.transform     =   CGAffineTransformMakeRotation(M_PI*0.25);
}
于 2012-07-11T19:00:53.983 回答
0

当您应用变换时,AutoLayout 和 AutoResizing 通常会造成困难,因为它们似乎会改变框架而不是视图的边界和中心。因此,自动调整会严重破坏您的布局。尝试将转换后的标签包装在一个视图中,该视图不会根据您的需要更改其父视图中的视图的尺寸和布局。

于 2014-07-15T14:13:56.863 回答