我正在尝试使用特定框架分配webview,然后为其y位置和高度设置动画。当我这样做时,webview立即捕捉到它的“最终”位置,而不是动画y,但它是动画高度。
另外,为了没有混淆,我使用UIView + Positioning(https://github.com/freak4pc/UIView-Positioning)来设置我的x,y,高度和宽度,而不是摆弄CGRects:)
这是动画的截屏,问题是在y = 260 / height = 0px时立即创建webview,它应该从y = 340 / height = 0px开始并转换到y = 260和高度= maxHeight。 y = 340px是顶部和底部分割的位置,也是webview上“关闭”动画所关注的位置。
代码
for (PageViewController * page in pages) {
[page preFullscreen];
}
[UIView animateWithDuration:0.5f animations: ^() {
for (PageViewController * page in pages) {
[page fullScreen];
}
}];
...
- (void)preFullscreen {
_webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.0f, 340.0f, 320.0f, 0.0f)];
_webView.delegate = self;
_webView.scrollView.bounces = NO;
_webView.scrollView.scrollEnabled = NO;
_webView.scalesPageToFit = YES;
_webView.backgroundColor = [UIColor whiteColor];
[_scrollView addSubview:_webView];
[_webView loadHTMLString:[entry storyHTML] baseURL:nil];
}
- (void)fullScreen {
_darkOverlayview.alpha = 0.0f;
_webView.y=260.0f;
_webView.height = [[UIScreen mainScreen] bounds].size.height - 260.0f;
_scrollView.delegate = hsVC;
_textareaView.hidden = YES;
_frontImage.height = 260.0f;
self.view.height = [[UIScreen mainScreen] bounds].size.height;
_scrollView.height = [[UIScreen mainScreen] bounds].size.height;
}
答案 0 :(得分:2)
我认为问题恰恰在于您正在使用UIView+Positioning
个添加内容?在内部,它最终在动画块内多次设置帧,因此开始位置丢失。使用常规setFrame:
在动画块中的每个视图中设置整个帧一次。
至于动画UIWebView
,我还建议在preFullscreen
中将其设置为全高(以便它位于屏幕下边缘下方),并且只为{{1}设置动画效果坐标。根据我的经验,在动画期间调整webview的大小可能会有问题,因为Web内容也会调整大小。