Я работал над этим два дня, и мне не повезло.У меня есть небольшое мозаичное изображение, которое я могу перетащить в любое место на экране с помощью координат касания.Мой первый вопрос: как я могу установить координаты изображений мозаики так, чтобы они начинались внутри зеленого CGRect вместо экрана верхнего угла?Другими словами, я хочу сделать зеленый CGRect расположение изображения по умолчанию с влиянием на пользовательские координаты toch.Мой следующий вопрос: как я могу написать его там, где единственное другое место на экране, куда я могу перетащить изображение, находится внутри красного CGRect?И если более половины изображения находится внутри красного CGRect, как я могу привязать его к красному CGRect, если кто-то отпустит его?Если более половины изображения находится за пределами CGRect, я хочу анимировать его обратно в его расположение по умолчанию.Если вы собираетесь ответить, объясните, пожалуйста, ваш ответ подробно, потому что я новичок в цели-c.Вот снимок экрана моего графического интерфейса.
Вот мой код:
DADViewController.h
#import <UIKit/UIKit.h>
#import "DADView.h"
@interface DADViewController : UIViewController
@property(nonatomic, weak)IBOutlet DADView *dadView;
@end
DADViewController.m
#import "DADViewController.h"
@implementation DADViewController
@synthesize dadView = _dadView;
-(void)setDadView:(DADView *)dadView
{
_dadView = dadView;
[self.dadView setNeedsDisplay];
}
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:touch.view];
location.x -= 40;
location.y -= 40;
self.dadView.thePoint = location;
[self.dadView setNeedsDisplay];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
[self touchesBegan:touches withEvent:event];
}
DADView.h
@interface DADView : UIView
@property(nonatomic) CGPoint thePoint;
@end
DADView.m
#import "DADView.h"
@implementation DADView
@synthesize thePoint = _thePoint;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(ctx, 2.0);
CGContextSetStrokeColorWithColor(ctx, [UIColor redColor].CGColor);
CGRect rectangle = CGRectMake(120, 70, 70, 70);
CGContextAddRect(ctx, rectangle);
CGContextStrokePath(ctx);
CGContextSetLineWidth(ctx, 2.0);
CGContextSetStrokeColorWithColor(ctx, [UIColor greenColor].CGColor);
CGRect rectangle2 = CGRectMake(120, 290, 70, 70);
CGContextAddRect(ctx, rectangle2);
CGContextStrokePath(ctx);
UIImage* pngWord = [UIImage imageNamed:@"wordbutton_01.png"];
[pngWord drawAtPoint:self.thePoint];
}
@end