Автоизменение размеров NSVIEW поведения

Обязательно включите:

self.navigationController.navigationBar.hidden = YES;

И:

self.navigationController.interactivePopGestureRecognizer.delegate = self;

И:

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    }

Оно должно выглядеть так:

- (void)viewWillAppear:(BOOL)animated {

    self.navigationController.navigationBar.hidden = YES;
    self.navigationController.interactivePopGestureRecognizer.delegate = self;
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.navigationController.interactivePopGestureRecognizer.enabled = YES;
        }
}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    return YES;
}
6
задан 3 revs, 2 users 69% 2 December 2013 в 19:02
поделиться

2 ответа

Оказывается, мой подход верен. Я устанавливал неверное значение для размера кадра, поэтому я не получал ожидаемого поведения. Doh.

3
ответ дан 8 December 2019 в 05:23
поделиться

Этот код

NSView* superView = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
NSView* subView   = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
[superView addSubview:subView];

[superView setAutoresizesSubviews:YES];
[subView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];

NSLog(@"subview's frame before resizing: %@", NSStringFromRect([subView frame]));
[superView setFrame:NSMakeRect(0, 0, 200, 100)];
NSLog(@"subview's frame after  resizing: %@", NSStringFromRect([subView frame]));

действительно дает ожидаемый результат:

[...] subview's frame before resizing: {{0, 0}, {100, 100}}
[...] subview's frame after  resizing: {{0, 0}, {200, 100}}

Ваша проблема в другом месте. Я ожидаю, что одно из ваших представлений контейнера не является частью иерархии представлений окна в то время, когда происходит изменение размера.

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

Другое решение - разместить несколько представлений друг над другом и использовать setHidden: для отображения только одного.

20
ответ дан 8 December 2019 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: