Изменение размера просмотра с помощью прикосновения пользователя - PullRequest
3 голосов
/ 18 января 2012

Это продолжение из этого вопроса .

enter image description here

Итак, коротко:

1) Я хочу, чтобы в моем приложении отображалась камера с изменяемым размером. Я пошел в этот репозиторий , скачал его и реализовал.

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 Ответ

1 голос
/ 28 марта 2012

Просто добавьте:

[captureVideoPreviewLayer setNeedsLayout];
[captureVideoPreviewLayer setNeedsDisplay];

до конца вашего метода делегата, чтобы сообщить UIKit, что границы изменились и содержимое слоя нуждается в обновлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...