我所拥有的是
UIView
1.Image1
2.Image2
3.UILabel
如下面的图片
然后我通过
在UILabel上应用旋转- (void)viewDidLoad
{
testLabel.transform = CGAffineTransformMakeRotation(M_PI*0.25);
[super viewDidLoad];
}
当我运行应用程序时,尤其是uilabe正在消失。查看第二张图片供您参考
请指出我在这里做错了什么......以及如何完成工作
由于
答案 0 :(得分: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;
答案 1 :(得分:1)
请注意,因为Autolayout会导致很多问题。
尝试取消选择“使用Autolayout”
它解决了尝试翻译对象的所有问题。
答案 2 :(得分:0)
首先尝试放置[super viewDidLoad]:
- (void)viewDidLoad
{
[super viewDidLoad];
testLabel.transform = CGAffineTransformMakeRotation(M_PI*0.25);
}
答案 3 :(得分:0)
AutoLayout和AutoResizing在应用变换时经常会造成困难,因为它们似乎会改变帧而不是视图的边界和中心。因此,自动调整会破坏您的布局。尝试将转换后的标签包装在一个视图中,该视图不会更改尺寸和布局,而是可以在其超级视图中查看。