如何在视图中移动图像

时间:2017-09-27 11:55:04

标签: ios objective-c

尝试通过在应用程序中传递某些值来在子视图中移动图像。如何计算视图的像素点“CGPoints”。这将是最好的方法。

setFrame:CGRectMake(_imgstride.frame.origin.x+_imgstride.frame.size.width,
 _imgstride.frame.origin.y, _imgstride.frame.size.width, 
 _imgstride.frame.size.height)];

我尝试使用上面的代码,imageView正在移动但不按我想要的方式工作。

1 个答案:

答案 0 :(得分:0)

试试这个。

对于Swift:

它的工作对我而言.imageview在视野中移动。

class ViewController: UIViewController {

    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let myPanGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(myPanAction))
        myPanGestureRecognizer.minimumNumberOfTouches = 1
        myPanGestureRecognizer.maximumNumberOfTouches = 1
        self.imageView.addGestureRecognizer(myPanGestureRecognizer)
    }

    func myPanAction(recognizer: UIPanGestureRecognizer) {
        let translation = recognizer.translation(in: self.view)
        var recognizerFrame = recognizer.view?.frame
        recognizerFrame?.origin.x += translation.x
        recognizerFrame?.origin.y += translation.y

        if (self.view.bounds.contains(recognizerFrame!)) {
            recognizer.view?.frame = recognizerFrame!
        }else{
            if (recognizerFrame?.origin.y)! < self.view.bounds.origin.y {
                recognizerFrame?.origin.y = 0
            }else if ((recognizerFrame?.origin.y)! + (recognizerFrame?.size.height)! > self.view.bounds.size.height) {
                recognizerFrame?.origin.y = self.view.bounds.size.height - (recognizerFrame?.size.height)!
            }

            if (recognizerFrame?.origin.x)! < self.view.bounds.origin.x {
                recognizerFrame?.origin.x = 0
            }else if ((recognizerFrame?.origin.x)! + (recognizerFrame?.size.width)! > self.view.bounds.size.width) {
                recognizerFrame?.origin.x = self.view.bounds.size.width - (recognizerFrame?.size.width)!
            }
        }
        recognizer.setTranslation(CGPoint(x: 0, y: 0), in: self.view)

    }
}

对于目标C:

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    [self.imageview addGestureRecognizer:pan];
}
#pragma mark - Gesture Recognizer
-(void)handlePan:(UIPanGestureRecognizer *)gesture {

    CGPoint translation = [gesture translationInView:self.view];
    CGRect recognizerFrame = gesture.view.frame;
    recognizerFrame.origin.x += translation.x;
    recognizerFrame.origin.y += translation.y;

    if (CGRectContainsRect(self.view.bounds, recognizerFrame)) {

        gesture.view.frame = recognizerFrame;
    }else {

        if (recognizerFrame.origin.y < self.view.bounds.origin.y) {
            recognizerFrame.origin.y = 0;
        }else if (recognizerFrame.origin.y + recognizerFrame.size.height > self.view.bounds.size.height) {
            recognizerFrame.origin.y = self.view.bounds.size.height - recognizerFrame.size.height;
        }

        if (recognizerFrame.origin.x < self.view.bounds.origin.x) {
            recognizerFrame.origin.x = 0;
        }else if (recognizerFrame.origin.x + recognizerFrame.size.width > self.view.bounds.size.width) {
            recognizerFrame.origin.x = self.view.bounds.size.width - recognizerFrame.size.width;
        }
    }
    [gesture setTranslation:CGPointMake(0, 0) inView:self.view];

}

@end