0
이것은 웹 브라우저에 관한 것입니다.하위보기를 제거 할 수 없습니까?
웹 페이지를 처리하는 사용자 지정 클래스가 있습니다.
SNBrowserView
SNBrowserViewPage
SNBrowserViewPages에는 두 개의 개체가 있습니다.
WKWebView
UIImageView // Snapshot of the WKWebView
메모리 관리를위한 페이지를 유지하거나 복구하는 기능입니다.
(테스트) 페이지가 선택 될 때마다 복구 기능이 호출됩니다.
선택 :
- (void)browserView:(SNBrowserView *)browserView didSelectPage:(SNBrowserViewPage *)page
{
if (page.sustained) {
[page recoverAnimated:NO];
}
}
서스테인 (Sustain) : 복구
- (void)sustain
{
_sustained = YES;
if (_webView) {
_webView = nil;
[_webView removeFromSuperview];
}
_snapshotView = [[UIImageView alloc] init];
_snapshotView.frame = CGRectMake(0.0, 0.0, self.frame.size.width, self.frame.size.height);
_snapshotView.image = _snapshot;
[self addSubview:_snapshotView];
}
:
- (void)recoverAnimated:(BOOL)animated
{
_sustained = NO;
_webView = [[WKWebView alloc] init];
_webView.frame = CGRectMake(0.0, 0.0, self.frame.size.width, self.frame.size.height);
_webView.navigationDelegate = self;
_webView.UIDelegate = self;
[self addSubview:_webView];
[self sendSubviewToBack:_webView];
[self loadURL:_initialURL]; // Start loading as early as possible.
if (animated) {
[UIView animateWithDuration:0.3
animations:^{
_snapshotView.alpha = 0.0;
}
completion:^(BOOL finished){
_snapshotView = nil;
[_snapshotView removeFromSuperview];
}];
}
else {
_snapshotView = nil;
[_snapshotView removeFromSuperview];
}
}
을 나는 그것을에서 제거 snapshotView가 전무로 설정하거나하지 않은 페이지를 복구 할 때 슈퍼 뷰.
어떻게 가능합니까?
심지어이 작동하지 않습니다
- (void)recoverAnimated:(BOOL)animated
{
_snapshotView = nil;
[_snapshotView removeFromSuperview];
}
snapshotView는 하위 뷰, removeFromSuperview 항상 작동합니다, 이유에 더가? 무슨 일을하는 것은 _view
nil
에 설정 한 후 수퍼에서 nil
을 제거하기 때문에 내가 제안
'_snapshotView = nil'을 호출하기 전에'[_snapshotView removeFromSuperview]'를 호출 해 주시겠습니까? – Randy
나는이 실수를 반복해서 해왔다. 지금은 효과가있다! – Vulkan