我知道我可以像这样改变图像视图的位置
myImageView.frame = CGRectMake(99, 34, 32, 32);
但是,如何更改x值,其余部分保留原样? 我意识到这是一个简单的问题,但因为我不知道如何在搜索中找到解决方案。感谢
答案 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)
答案 5 :(得分:0)
在Swift中,您现在可以执行以下操作:
view.frame = view.frame.offsetBy(dx: 0, dy: -100)
向上移动。