以编程方式在xib文件中移动UILabel

时间:2014-01-10 11:06:53

标签: iphone objective-c uitextfield uilabel

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

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

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

CODE - 取自相应的ViewController内部

- (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);        

}

2 个答案:

答案 0 :(得分:3)

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

enter image description here

答案 1 :(得分:1)

试试这个:

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;