使用用户触摸调整大小视图

时间:2012-01-18 13:31:47

标签: iphone objective-c ios xcode view

这是继续from this question

enter image description here

总结一下:

1)我希望在我的应用中拥有可调整大小的视图相机。我去了this repo,下载并实施了它。

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)在我的委托方法中

- (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有点疯狂;一旦开始编辑,它就不会触摸视图的顶部边缘。它有点粘在右下角但从未完全填满视图。

委托中的标记为预览和用户可调整大小的视图记录相等的值。

1 个答案:

答案 0 :(得分:1)

只需添加:

[captureVideoPreviewLayer setNeedsLayout];
[captureVideoPreviewLayer setNeedsDisplay];

到你的委托方法的末尾,向UIKit发信号通知边界已经改变,并且图层的内容需要更新。