- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
第一个解决方案(下图)仅适用于 iOS 7,不适用于 iOS 6 或 iOS 5。因此,另一种方法是在发生任何滚动运动时使用 -(void)scrollViewDidScroll 更新 ScrollView 的内容大小: (UIScrollView *)scrollView
,适用于 iOS 7、6 和 5。
在-(void)scrollViewDidScroll:(UIScrollView *)scrollView
里面,我记录了最高的content size高度,
if (_currentWebPageContentHeight < [[_webView scrollView] contentSize].height) {
_currentWebPageContentHeight = [[_webView scrollView] contentSize].height;
}
每当加载另一个网页或重新加载当前页面时,将 _currentWebPageContentHeight
恢复为默认高度(网页 View 的高度)。
我找到了一个解决方法,但不知道它为什么有效。稍微更改 ScrollView 的 contentInset
会强制将 contentSize
刷新为当前大小。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
/// Load image data in async manner from photo chosen in album or taken by camera
// ....
/// Refresh the contentSize of UIScrollView inside UIWebView
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[_galleryPopoverController dismissPopoverAnimated:YES];
/// A patch to force refresh the contentSize of scrollView, 0.01 is chosen to give unnoticeable layout change to user
[[webView scrollView] setContentInset:UIEdgeInsetsMake(0, 0, 0.01, 0)]; // UIEdgeInsetsMake(top, left, bottom, right)
} else {
[picker dismissViewControllerAnimated:YES completion:^{
/// A patch to force refresh the contentSize of scrollView, 0.01 is chosen to give unnoticeable layout change to user
[[webView scrollView] setContentInset:UIEdgeInsetsMake(0, 0, 0.01, 0)]; // UIEdgeInsetsMake(top, left, bottom, right)
}];
}
}
使用 Xcode 5、iOS 7、iPhone 5,无 nib 文件,无手动添加自动布局约束。
在一个项目中,有一个UIWebView,它的左下角有一个按钮,该按钮用于将iPhone相册或相机中的照片上传到测试网站。
当我尝试从相册上传照片时单击 Choose
按钮时,方法 -(void)imagePickerController:didFinishPickingMediaWithInfo:
被调用,当此方法完成时, UIImagePickerController 随动画消失,并加载所选照片。但是UIWebView的UIScrollView subview ,虽然可以向下滚动到当前网页的末尾,但是一直弹回到UIWebView的可见帧(origin.x = 0, origin.y = 64, size.width = 320, size.height = 568 - 64),也看不到垂直滚动指示器。
嵌入在 UIWebView 中的 UIScrollView 的框架/边界是正确的,我在以下语句的 ^{} 中检查它:
// At the end of the -(void)imagePickerController:didFinishPickingMediaWithInfo:
[imagePickerControllerInstance dismissViewControllerAnimated:YES completion:^{}];
我还强制这些值是正确的。但不会改变上述意外行为。
[[webView scrollView] setShowsVerticalScrollIndicator:YES];
[[webView scrollView] setScrollIndicatorInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[webView scrollView] setContentSize:(CGSizeMake([[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height - 64))];
关于上面使用的数字:
谁能解决这个问题?谢谢!
最佳答案
您应该setContentSize:
设置为实际内容大小,而不是可见帧大小。也就是说,如果您的内容是1000px 高,你应该setContentSize:CGSizeMake(width, 1000)
。通过这种方式,您可以告诉 UIScrollView
它应该滚动以显示 1000 像素高的内容。如果您将 UIScrollView
的内容大小设置为其框架,则不会执行滚动并且不会出现滚动指示器(仅弹跳效果)。
关于ios - UIWebView的UIScrollView子view可以滚动但是弹回frame没有出现垂直滚动指示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19832098/
我有一个 View ,我正在以这样的方式对其进行动画处理,使其扩展并移动到 View Controller 中的一组新坐标。我正在使用关键帧执行此操作: UIView.animateKeyframes
我有一个以视频为背景的UIView。当我呈现另一个 subview ,然后弹回到包含视频的 subview 时,会发生这种情况: Video [11 seconds] (保留视频,因为 GIF 不具有
首先,这是一些代码: - (void)viewDidLoad { [super viewDidLoad]; FirstViewController *first = [[FirstVi
我是一名优秀的程序员,十分优秀!