Ios 仅更改X轴值

Ios 仅更改X轴值,ios,cgrect,Ios,Cgrect,我知道我可以像这样改变图像视图的位置 myImageView.frame = CGRectMake(99, 34, 32, 32); 但是我如何只改变x值,其余的保持不变呢? 我意识到这是一个简单的问题,但因为我不知道如何用词搜索,我很难找到解决办法。谢谢创建一个新矩形并修改所需的部分,然后将框架指定给该矩形 //capture frame CGRect thisRect = myImageView.frame; //modify required frame parameter (.ori

我知道我可以像这样改变图像视图的位置

myImageView.frame = CGRectMake(99, 34, 32, 32);
但是我如何只改变x值,其余的保持不变呢?
我意识到这是一个简单的问题,但因为我不知道如何用词搜索,我很难找到解决办法。谢谢

创建一个新矩形并修改所需的部分,然后将框架指定给该矩形

//capture frame
CGRect thisRect = myImageView.frame;

//modify required frame parameter (.origin.x/y, .size.width/height)
thisRect.origin.x = 0;

//set modified frame to object
[myImageView setFrame:thisRect];
CGRect newFrame = myImageView.frame;
newFrame.origin.x = 49;

myImageView.frame = newFrame;
您可以类似地访问宽度:

newFrame.size.width = 55;

等等。

对于这个问题,您有一些解决方案,但通常,如果您想简化,您最终会使用类似UIView+Position()或。虽然这可能是一种过度的杀伤力

另一种选择是使用CGRect辅助方法,如下所示:

myImageView.frame = CGRectOffset(myImageView.frame, 10, 0);

有关此问题解决方案的更多信息。

@staticVoidMan基本上已经说过了,但是如果您希望保持当前作用域干净,并且不使用临时变量污染它,您可以利用a并执行以下操作:

[self.view setFrame:({

    CGRect frame = [self.view frame];
    frame.origin.x = 0;
    frame;

})];

请注意,虽然我说它是一个GCC扩展,但它可以与Clang配合使用(在大多数情况下,在这些方面与GCC兼容)。

Swift可以找到使用扩展的替代方案。上面的例子:

myImageView.x = 99


在Swift中,您现在可以执行以下操作:

view.frame = view.frame.offsetBy(dx: 0, dy: -100)

向上移动。

@Rookie虽然这个解决方案有效,但我真的相信,在这种情况下,CGRectOffSet更干净。请查看我的答案以了解更多详细信息。@TiagoAlmeida:确实很整洁,但您提供的链接让它看起来像是阅读了很多。要简单得多:)@男人同意。只是给出了大量的解决方案:p这很有效,因为我想根据当前值改变位置。我在做这样的事情,thisRect.origin.x+=25;我不明白我怎么能用CGRectOffset@Rookie:对于这一点,它应该是
CGRectOffset(myImageView.frame,25,0)
将x的值增加25对于我来说,这是迄今为止最干净和客观友好的选择。这应该是一个公认的答案。这是一种更干净的工作方式
view.frame = view.frame.offsetBy(dx: 0, dy: -100)