应用转换iOS后重新定位标签

时间:2015-07-07 12:02:10

标签: ios objective-c uiview

我在UIView中心下面有一个UILabel,边距为20像素。

UIView中心

UIViewCenter + 20

 self.tableNameLabel.center = CGPointMake(self.tableView.origin.x + self.tableView.frame.size.width / 2, self.tableView.origin.y + self.tableView.frame.size.height / 2 + (kTableNameMargin/ 2.f));

当我旋转UIView 90度时,我想重新计算这个UILabel的位置,这样UILabel可以保持在相同的位置,在中心下方,具有相同的边距。

问题是当应用旋转时,UILabel会转到另一个位置。例如,当我应用90º时,标签向右移动。出现这种情况的具体原因是什么我知道这个:

  

警告:如果transform属性不是identity变换,则此属性的值是未定义的,因此应该被忽略。

任何想法我如何解决这个问题,以便UIlabel可以始终保持在中心位置?

1 个答案:

答案 0 :(得分:0)

不是自己设置和计算中心,为什么不使用自动布局?在自动布局中,您可以将标签的中心与其父视图的中心对齐。无论何时在父视图上应用任何转换,都将无需重​​新定位标签。

现在,如果将父视图旋转90度,则标签也将旋转90度。为避免这种情况,您必须将标签旋转270度,如下所示

-(void)rotateBy90
{
    self.parentView.transform = CGAffineTransformMakeRotation(M_PI_2); // 90 degress
    self.label.transform = CGAffineTransformMakeRotation(M_PI + M_PI_2); //270 degress
}