尝试通过在应用程序中传递某些值来在子视图中移动图像。如何计算视图的像素点“CGPoints”。这将是最好的方法。
setFrame:CGRectMake(_imgstride.frame.origin.x+_imgstride.frame.size.width,
_imgstride.frame.origin.y, _imgstride.frame.size.width,
_imgstride.frame.size.height)];
我尝试使用上面的代码,imageView正在移动但不按我想要的方式工作。
答案 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