मैं स्केलिंग और मेरे एप्लिकेशन में एक UIView खींच लिए इसका उपयोग से संबंधित है पढ़ें।
1) सबसे पहले अपने कार्यान्वयन के लिए निम्न जोड़ सकते हैं और में अपने विचार करने के लिए दुकानों कनेक्ट करने के लिए सुनिश्चित करें कि आपके स्टोरीबोर्ड
#import <QuartzCore/QuartzCore.h>
@interface yourclass() {
BOOL isDragging;
}
@property (weak, nonatomic) IBOutlet UIImageView *outletMainView; // View that contains the view we want to drag
@property (weak, nonatomic) IBOutlet UIImageView *outletRedDot; // The view we want to drag in the main view
स्पर्श शुरू होता है जब मैं दृश्य थोड़ा पैमाने उपयोगकर्ता विशेष दृश्य को छू लेती है जब यहां उसे लाल डॉट
// ANIMATE RED DOT WHEN START DRAGING IT
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInView:self.outletMainView];
CGRect redDotRect = [self.outletRedDot frame];
if (CGRectContainsPoint(redDotRect, touchLocation)) {
isDragging = YES;
NSLog(@"Red Dot tapped!");
[UIView animateWithDuration:0.2
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.outletRedDot.transform = CGAffineTransformMakeScale(1.75, 1.75);
}
completion:^(BOOL finished) {
}];
} else {
return;
}
}
2) है तो मैं उंगली बिंदु के बिंदु का पालन करने के दृश्य सेट
// ANIMATE AND MOVE RED DOT WHEN WE DRAG IT
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInView:self.outletMainView];
if (isDragging) {
[UIView animateWithDuration:0.0f
delay:0.0f
options:(UIViewAnimationOptionBeginFromCurrentState|UIViewAnimationOptionCurveEaseInOut)
animations:^{
self.outletRedDot.center = touchLocation;
NSLog(@"X: %0.2f Y: %0.2f",touchLocation.x-redDotStartCenter.x, redDotStartCenter.y-touchLocation.y);
}
completion:NULL];
}
}
3) अंत में जब खींचने दृश्य समाप्त होता है अपने मूल पैमाने पर रीसेट है
// RESET RED DOT WHEN WE STOP DRAGGING
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInView:self.outletMainView];
CGRect redDotRect = [self.outletRedDot frame];
if (CGRectContainsPoint(redDotRect, touchLocation)) {
[UIView animateWithDuration:0.1
delay:0.0
options:0
animations:^{
self.outletRedDot.transform = CGAffineTransformMakeScale(1.0, 1.0);
}
completion:^(BOOL finished) {
}];
}
isDragging = NO;
}
स्रोत
2013-11-23 14:05:57
धन्यवाद उत्तर के लिए, मुझे लगता है कि परियोजना मैं परिणाम का परीक्षण अध्ययन करेगा और मुझे लगता है कि यह मेरे लिए एक बहुत मदद करता है सकते हैं, धन्यवाद। – rokimoki