使用用户触摸调整视图大小 [英] Resizable View using user touch

查看:51
本文介绍了使用用户触摸调整视图大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是该问题的继续,下载并实现了它.

2)

  AVCaptureVideoPreviewLayer * newCaptureVideoPreviewLayer =[[AVCaptureVideoPreviewLayer分配] initWithSession:[[self captureManager]会话]];UIView * view = [self videoPreviewView];CALayer * viewLayer = [view layer];[viewLayer setMasksToBounds:YES];CGRect框架= CGRectMake(50,50,200,150);userResizableView = [[SPUserResizableView alloc] initWithFrame:frame];//CALayer * viewLayer = [userResizableView层];userResizableView.delegate = self;[view setBackgroundColor:[UIColor clearColor]];userResizableView.contentView = view;[self.view addSubview:userResizableView];//[contentView版本];[userResizableView版本];CGRect边界= [视图边界];[newCaptureVideoPreviewLayer setFrame:bounds]; 

3)在我的委托方法中

 -(void)userResizableViewDidEndEditing:(SPUserResizableView *)userResizableView{CGRect ResizableViewFrame = self.userResizableView.frame;NSLog(@%f ---%f ---%f ---%f ---",userResizableView.frame.origin.x,userResizableView.frame.origin.y,userResizableView.frame.size.width,userResizableView.frame.size.height);captureVideoPreviewLayer.frame = ResizableViewFrame;NSLog(@%f ---%f ---%f ---%f ---",captureVideoPreviewLayer.frame.origin.x,captureVideoPreviewLayer.frame.origin.y,captureVideoPreviewLayer.frame.size.width,captureVideoPreviewLayer.frame.size.height);} 

4)现在我的avcapturePreview有点疯狂了;开始编辑后,它不会触摸视图的顶部边缘.这种东西会粘在右下角,但永远不会完全填满视图.

代理中的slog在预览和用户可调整大小的视图中记录的值相等.

解决方案

只需添加:

  [captureVideoPreviewLayer setNeedsLayout];[captureVideoPreviewLayer setNeedsDisplay]; 

在委托方法的末尾,向UIKit发出信号,通知边界已更改,并且图层的内容需要更新.

This is in continuation from this question.

So to sum it short :

1) I want to have resizable view camera in my app. I went to this repo, downloaded it and implemented it.

2)

AVCaptureVideoPreviewLayer *newCaptureVideoPreviewLayer =
  [[AVCaptureVideoPreviewLayer alloc] initWithSession:
    [[self captureManager] session]];
UIView *view = [self videoPreviewView];
CALayer *viewLayer = [view layer];
[viewLayer setMasksToBounds:YES];

CGRect frame = CGRectMake(50, 50, 200, 150);
userResizableView = [[SPUserResizableView alloc] initWithFrame:frame];
// CALayer *viewLayer = [userResizableView layer];
userResizableView.delegate =self;
[view setBackgroundColor:[UIColor clearColor]];
userResizableView.contentView =view;
[self.view addSubview:userResizableView];
// [contentView release]; 
[userResizableView release];
CGRect bounds = [view bounds];

[newCaptureVideoPreviewLayer setFrame:bounds];

3) in my delegate method

- (void)userResizableViewDidEndEditing:(SPUserResizableView *)userResizableView
{
    CGRect ResizableViewFrame = self.userResizableView.frame;
    NSLog(@" %f--- %f--- %f--- %f ---",userResizableView.frame.origin.x,userResizableView.frame.origin.y,userResizableView.frame.size.width,userResizableView.frame.size.height);
    captureVideoPreviewLayer.frame = ResizableViewFrame;
    NSLog(@" %f--- %f--- %f--- %f ---",captureVideoPreviewLayer.frame.origin.x,captureVideoPreviewLayer.frame.origin.y,captureVideoPreviewLayer.frame.size.width,captureVideoPreviewLayer.frame.size.height);
}

4) Now my avcapturePreview is kind of going wild; it does not touch the top edge of the view once it starts editing. It kind of sticks to the bottom right corner but never fully fills the view.

The slog in the delegate logs equal values for both preview and user resizable view.

解决方案

Simply add:

[captureVideoPreviewLayer setNeedsLayout];
[captureVideoPreviewLayer setNeedsDisplay];

to the end of your delegate method to signal to UIKit that the bounds have changed and the layer's contents need updating.

这篇关于使用用户触摸调整视图大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆