Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 不按原点更改帧_Ios_Frame - Fatal编程技术网

Ios 不按原点更改帧

Ios 不按原点更改帧,ios,frame,Ios,Frame,我有一个可拖动的UIImageView,它在某个点上会更改为另一个UIImageView帧。问题是我需要使用第一个UIImageView中相同的点击点进行转换。我只是这样做: _firstImageView.frameSize = _secondImageView.frameSize; 但是帧从_firstImageView原点更改。我需要从我在firstImageView中单击的点进行转换: CGPoint clickedPoint = [sender locationInView:self

我有一个可拖动的UIImageView,它在某个点上会更改为另一个UIImageView帧。问题是我需要使用第一个UIImageView中相同的点击点进行转换。我只是这样做:

_firstImageView.frameSize = _secondImageView.frameSize;
但是帧从_firstImageView原点更改。我需要从我在firstImageView中单击的点进行转换:

CGPoint clickedPoint = [sender locationInView:self.view];
我试过layer.anchorPoint,但这会使imageView消失,不知道为什么(我先做了一个从self.view到_firstImageView参考系统的转换点)

编辑,例如,为了更好地解释问题:

我有一个高100的uiimage1框架。还有一个50。 如果我单击uiimage1的点(y=90)并开始拖动,则会生成一个测试交点,如果相交,则会将uiimage1更改为UIImage2的帧。但是,由于单击的是y=90,并且UIImage2的最大y高度仅为50,因此它会通过UIImage1原点更改帧大小。我继续拖动,单击点位于新帧外部(即仅y-height=50,单击点为y=90)。我的问题是:我可以不通过原点而是通过点击点的位置来改变框架吗


提前谢谢

你能说得更清楚些吗?你想让firstimageview不改变原点,而只具有与secondimageview相同的宽度和高度吗?我编辑了这个问题。谢谢你们,但问题已经解决了。以上两种方法可以帮助你们
+(CGRect)getUpdatedFrame:(CGRect)frame byChangingCenterTo:(CGPoint)newCenter
{
    float width = frame.size.width;
    float height = frame.size.height;
    return CGRectMake(newCenter.x-width/2, newCenter.y-height/2, width, height);
}

+(CGPoint)centerForRect:(CGRect)rect
{
    return CGPointMake( rect.origin.x+rect.size.width/2 , rect.origin.y+rect.size.height/2 );
}