仅更改X轴值

时间:2014-01-31 18:24:25

标签: ios cgrect

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

myImageView.frame = CGRectMake(99, 34, 32, 32);

但是,如何更改x值,其余部分保留原样? 我意识到这是一个简单的问题,但因为我不知道如何在搜索中找到解决方案。感谢

6 个答案:

答案 0 :(得分:8)

//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];

答案 1 :(得分:4)

你有一些解决这个问题的方法,但通常,如果你想简化,你最终会使用像UIView + Position(UIView+Position.h UIView+Position.m)或UIView Helpers这样的类别。虽然这可能是一种矫枉过正的行为。

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

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

有关此问题的解决方案的更多信息read this post

答案 2 :(得分:1)

@staticVoidMan基本上已经说过了,但是如果你想保持当前范围的清洁并且不用临时变量污染它,你可以利用GCC extension并执行此操作:

[self.view setFrame:({

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

})];

请注意,虽然我说这是一个GCC扩展,但它适用于Clang(对于大多数部分,它与GCC兼容)。

答案 3 :(得分:0)

创建一个新矩形并修改所需的部分,然后将帧指定给那个。

CGRect newFrame = myImageView.frame;
newFrame.origin.x = 49;

myImageView.frame = newFrame;

您可以类似地访问宽度:

newFrame.size.width = 55;

答案 4 :(得分:0)

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

myImageView.x = 99

myImageView.left = 99

答案 5 :(得分:0)

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

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

向上移动。