Ios CGRectOffset isn';行不通

Ios CGRectOffset isn';行不通,ios,objective-c,core-graphics,Ios,Objective C,Core Graphics,出于某种原因,在我的新iOS项目中,我无法让cRectOffset为我的UITextField工作(尽管我无法让它与我尝试的任何元素一起工作) 在我的viewController.h中,我将其指定为 @property (weak, nonatomic) IBOutlet UITextField *domainInput; 在我的viewController.h中,我试图通过执行 - (void)viewDidLoad { [super viewDidLoad]; // Do

出于某种原因,在我的新iOS项目中,我无法让cRectOffset为我的UITextField工作(尽管我无法让它与我尝试的任何元素一起工作)

在我的viewController.h中,我将其指定为

@property (weak, nonatomic) IBOutlet UITextField *domainInput;
在我的viewController.h中,我试图通过执行

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    _domainInput.frame = CGRectOffset(_domainInput.frame, 0, 500);
    NSLog(@"%f %f", _domainInput.frame.origin.x, _domainInput.frame.origin.y);
}
我将位置打印到日志中,以证明位置正在更新,但在模拟器中,没有移动

我第一次注意到这个bug是在尝试在这个位置上运行animateWithDuration时。当我尝试放置
\u domainput.frame=CGRectOffset(\u domainput.frame,0500)在animeWithDuration函数中,它从偏移位置开始动画并移回原始位置

我绞尽脑汁想了几个小时想弄明白这一点,我觉得这一定是我做错了什么。我甚至开始了一个只有一个文本字段的新项目,但我无法使用CGRectOffset移动它


提前感谢您的帮助

您可能需要了解视图生命周期,在视图进入导航堆栈(或其superview进入导航堆栈)后确定最终帧,然后将针对当前
UIWindow
实例调整帧;在进入导航堆栈之前,将从xib临时加载
框架
,并可根据自动布局或自动调整遮罩设置覆盖它以调整
UIWindow
。长话短说:在视图有机会成为视图层次结构的一部分之前调用的
–viewDidLoad
方法。这不是一个bug。仅供参考:另外,当您正确使用autolayout时,设置
frame
也没有多大意义。@holex,我应该提到,在它出现在
viewDidLoad
之前,它是在一个函数中,当从文本字段内部点击return时触发的。当时我正在用
animateWithDuration
测试它,我注意到它会首先将位置设置为目标位置,然后恢复到原始位置。我只是将其移动到
viewDidLoad
以避免我必须不断输入文本并点击return。@iGARET,在这种情况下,也许A-Live的评论会引导您找到解决方案–如果自动布局处于
打开状态,您不能直接更改
框架
中心