关于iphone:以编程方式在xib文件中移动UILabel

Programmatically moving a UILabel in a xib file

问题:我更改帧信息后我的UILabel没有移动但是在用NSLog输出后,帧信息与正确的位置匹配,但标签本身并没有实际移动。

更多信息:我正在尝试将UILabel移动到与UITextField相同的位置。 两者都包含在XIB文件中。 我可以很好地更新文本,输出框架信息将表明标签已移动到正确的位置,但是当您实际在屏幕上查看时,您可以看到标签正好在我手动放置在XIB文件中的任何位置; 它没有动。

photoDescriptionLabel是我试图放在photoDescription顶部的UILabel,这是一个UITextField。 文本字段不可见并且可见,因此您只能看到标签,直到编辑它为止,此时我隐藏标签并使文本字段可见。

代码 - 取自相应的ViewController内部

1
2
3
4
5
6
7
8
9
10
- (void)viewDidLoad
{
    [super viewDidLoad];

    self.photoDescriptionLabel.frame = CGRectMake(self.photoDescription.frame.origin.x,self.photoDescription.frame.origin.y,self.photoDescriptionLabel.frame.size.width,self.photoDescriptionLabel.frame.size.height);        
    self.photoDescription.hidden = YES;
    self.photoDescriptionLabel.hidden = NO;
    NSLog(@"x: %f, y: %f, width: %f, height: %f",self.photoDescriptionLabel.frame.origin.x,self.photoDescriptionLabel.frame.origin.y,self.photoDescriptionLabel.frame.size.width,self.photoDescriptionLabel.frame.size.height);        

}


我认为您必须在Interface Builder中关闭主视图的"使用Autolayout"标志。 创建新项目时,默认情况下会启用"自动布局"。

enter image description here


尝试这个:

1
2
3
4
CGRect frame = self.photoDescriptionLabel.frame;
frame.origin.x = self.photoDescription.frame.origin.x;
frame.origin.y = self.photoDescription.frame.origin.y;
self.photoDescriptionLabel.frame = frame;