Cocoa touch Cocoa Touch-在屏幕上移动UIImageView

Cocoa touch Cocoa Touch-在屏幕上移动UIImageView,cocoa-touch,uiimageview,Cocoa Touch,Uiimageview,让用户拖动UIImageView以将其放置在自己选择的位置的简单方法是什么。这是一个摄影应用程序 谢谢 首先,创建一个容器视图来处理触摸事件。 然后,您需要一个UIIMageView子类来确保当您设置对象的中心时,它不会离开屏幕 不久前我制作了一个类似的类,下面是代码(它也可以是动画的) h #导入 @接口对象视图:UIImageView { } -(void)设置中心:(CGPoint)中心内边界:(CGRect)带动画的边界:(BOOL)动画; @结束 m #导入“ObjectView.h

让用户拖动UIImageView以将其放置在自己选择的位置的简单方法是什么。这是一个摄影应用程序


谢谢

首先,创建一个容器视图来处理触摸事件。 然后,您需要一个UIIMageView子类来确保当您设置对象的中心时,它不会离开屏幕

不久前我制作了一个类似的类,下面是代码(它也可以是动画的)

h

#导入
@接口对象视图:UIImageView
{
}
-(void)设置中心:(CGPoint)中心内边界:(CGRect)带动画的边界:(BOOL)动画;
@结束
m

#导入“ObjectView.h”
@实现对象视图
#定义移动到中心持续时间0.1
-(void)设置中心:(CGPoint)中心内边界:(CGRect)带动画的边界:(BOOL)动画
{
CGRect frame=self.frame;
if(center.x+frame.size.width/2>bounds.origin.x+bounds.size.width)
center.x-=((center.x+frame.size.width/2)-(bounds.origin.x+bounds.size.width));
else if(center.x-frame.size.width/2bounds.origin.y+bounds.size.height)
center.y-=(center.y+frame.size.height/2)-(bounds.origin.y+bounds.size.height);
else if(center.y-frame.size.height/2

希望对你有所帮助

好的,我有点困惑我应该在参数中放什么,因为我从来没有用过CG的东西。cneter是UIImageView的中心。边界是它的superview的边界,UIImageView放在哪里。要获得边界,只需使用self.bounds。中心应该是触摸屏的位置超级视图的边界应该是屏幕尺寸,对吗?我必须检测用户的触摸和输入作为中心还有一件事:在检测触摸的方法中,确保用户第一次触摸对象时,您将该对象的方法设置为可动画。否则它将“捕捉”到中心。如果您使用动画,则转换非常平滑。如何将我的exitsing视图链接到此视图,使其成为触摸事件的容器?
#import <UIKit/UIKit.h>

@interface ObjectView : UIImageView 
{
}

-(void) setCenter: (CGPoint) center inBounds: (CGRect) bounds withAnimation: (BOOL) animate;

@end
#import "ObjectView.h"

@implementation ObjectView

#define MOVE_TO_CENTER_DURATION 0.1
-(void) setCenter: (CGPoint) center inBounds: (CGRect) bounds withAnimation: (BOOL) animate
{
    CGRect frame = self.frame;

    if(center.x + frame.size.width/2 > bounds.origin.x + bounds.size.width) 
        center.x -= ((center.x + frame.size.width/2) - (bounds.origin.x + bounds.size.width));
    else if(center.x - frame.size.width/2 < bounds.origin.x) 
        center.x += bounds.origin.x - (center.x - frame.size.width/2);

    if(center.y + frame.size.height/2 > bounds.origin.y + bounds.size.height) 
        center.y -= (center.y + frame.size.height/2) - (bounds.origin.y + bounds.size.height);
    else if(center.y - frame.size.height/2 < bounds.origin.y) 
        center.y += bounds.origin.y - (center.y - frame.size.height/2);

    if(animate) {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration: MOVE_TO_CENTER_DURATION];
    }

    self.center = center;

    if(animate)
        [UIView commitAnimations];

} 

@end