2016-07-05 3 views
0

меня обновить кодПодвижные UIImageView маска

Я пытаюсь получить UIImageView маски подвижны. Является ли это возможным?

Вот код, который я пытаюсь получить на работу.

- (void)viewDidLoad { 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

CGRect rect = CGRectMake(50, 50, 100, 100); 
UIView *mask = [[UIView alloc] initWithFrame:rect]; 
mask.backgroundColor = UIColor.whiteColor; 
mask.layer.cornerRadius = CGRectGetHeight(rect)/2; 
self.view.maskView = mask; 

UIView *view = self.view; 
UIColor *color = [UIColor colorWithRed:145.0/255.0 
           green:191.0/255.0 
            blue:192.0/255.0 
           alpha:1.0]; 
view.backgroundColor = color; 

view.maskView = imageView; 

} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 

// get touch event 

UITouch *touch = [[event allTouches] anyObject]; 

CGPoint touchLocation = [touch locationInView:self.view]; 

if ([touch view] == imageView) { // If touched view is imageView , then assign it its new location 

    imageView.center = touchLocation; 
    [self.view bringSubviewToFront:imageView]; 

    } 
} 

Если я не код маски в viewDidLoad я могу переместить ImageView, но когда я добавить код в viewDidLoad ImageView перестать быть подвижным.

Новый код Теперь я использую CAlayer для маскировки.

- (void)viewDidLoad { 
[super viewDidLoad]; 

CALayer *maskLayer = [CALayer layer]; 
UIImage *mask = [UIImage imageNamed:@"star.png"]; 
maskLayer.contents = mask; 

imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]; 
imageView.image = [UIImage imageNamed:@"start.jpg"]; 
imageView.layer.mask = maskLayer; 
[self.view addSubview:imageView]; 

imageView.userInteractionEnabled = YES; 

maskLayer.contents = (id)mask.CGImage; 

maskLayer.frame = (CGRectMake(60,60,300,300)); 

[self.view bringSubviewToFront:imageView]; 

} 

И для перемещения маски, которую я все еще использую, но я хочу, чтобы маска обновлялась при ее перемещении. Когда я перемещаю его, теперь это единственное изображение.

+0

Где ImageView выделяется? – Roecrew

+0

Благодарим вас за ответ Roecrew. Я не понимаю, что вы имеете в виду. Код, который я использую в файле * .m, - это код выше. В * .h файла у меня есть это '@property (неатомический, сохранить) IBOutlet UIImageView * ImageView;' и '@property (неатомические, сохранить) IBOutlet UIView * сверху;' – user3266053

ответ

0

Используйте этот код шаг ImageView на ваш взгляд

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    CGRect rect = CGRectMake(50, 50, 100, 100); 
    UIView *mask = [[UIView alloc] initWithFrame:rect]; 
    mask.backgroundColor = UIColor.whiteColor; 
    mask.layer.cornerRadius = CGRectGetHeight(rect)/2; 
    self.view.maskView = mask; 

    UIView *view = self.view; 
    UIColor *color = [UIColor colorWithRed:145.0/255.0 
           green:191.0/255.0 
            blue:192.0/255.0 
           alpha:1.0]; 
    view.backgroundColor = color; 

    view.maskView = imageView; 

    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizeralloc]initWithTarget:self action:@selector(moveImageWithGesture:)]; 
    view.userInteractionEnabled = YES; 
    [view addGestureRecognizer:panGesture]; 
    [self addSubview:view]; 
} 

    -(void)moveImageWithGesture:(UIPanGestureRecognizer *)panGesture 
    { 

     UIImageView *imageView = (UIImageView *)[panGesture view]; 
     NSLog(@"%ld",(long)imageView.tag); 
     CGPoint touchLocation =[panGesture locationInView:self]; 
     imageView.center = touchLocation; 


    } 
+0

Спасибо Джека, Проблемы с UIPanGestureRecognizer является что я хочу использовать 'NSLog (@"% @ ", NSStringFromCGPoint (touchLocation)); и я не знаю, что нужно читать позицию с помощью' UIPanGestureRecognizer'. Почему я хочу, потому что я хочу прочитать, где маска UIImageView позиция есть. – user3266053

+0

Я знаю только, сколько uiimageview на UIView. затем u возьмите все uiimageview в массиве и добавьте жест один за другим с тегом. затем проверьте – jack

+0

Okej, но я не получу ваш код для работы. Я попытался поместить код, который находится над '- (void) moveImageWithGesture: (UIPanGestureRecognizer *) panGesture' в viedDidLoad, и я также попытался поместить код в' - (IBAction) handlePan: (UIPanGestureRecognizer *) распознаватель', t заставить его работать. Вы вводите комментарий ... изображение и рамку? У меня есть только один UIImageView для маски, а затем у меня есть изображение для фонового изображения. – user3266053