Ответ 1
Попробуйте self.automaticallyAdjustsScrollViewInsets = NO; в ViewDidLoad.
ios 7 автоматически добавляет 64px для просмотра прокрутки. (строка состояния и панель навигации)
Im загружает локальные html файлы, так как в iOS7 добавлено свободное пространство сверху в UIWebView (я не могу опубликовать изображение, поскольку у меня недостаточно точек). изображение можно увидеть здесь - snap shot из симулятора iPhone, uiwebview окружен черным фреймом, содержимое html серое, но над ним добавлен белый цвет
Я попытался настроить масштабирование с помощью
[webView stringByEvaluatingJavaScriptFromString:@"document. body.style.zoom = 5.0;"];
webView.scalesPageToFit = NO;
Я также установил попытку удалить белый интервал:
NSString *padding = @"document.body.style.margin='0';document.body.style.padding = '0'";
[webView stringByEvaluatingJavaScriptFromString:padding];
до сих пор не повезло. В обозревателе Chrome Chrome нет пробелов. Html файлы - файлы Google Swiffy, содержащие html и JSON.
edit: обновленное изображение
Попробуйте self.automaticallyAdjustsScrollViewInsets = NO; в ViewDidLoad.
ios 7 автоматически добавляет 64px для просмотра прокрутки. (строка состояния и панель навигации)
Эта проблема влияет только на UIWebView
, если она является первым подзором родительского представления. Один из альтернативных способов решения этой проблемы - добавить еще один невидимый пустой вид родительского представления в качестве первого представления. В интерфейсе Builder добавьте подпункт нулевого размера и используйте команду меню Editor- > Arrange- > Send to Back.
Если вы не используете Interface Builder, но вместо этого выполняете подклассу UIWebView
, то это можно сделать, создав переменную экземпляра UIView
с именем scrollFixView и переопределив следующие методы:
- (void)didMoveToSuperview
{
[super didMoveToSuperview];
if ([self superview].subviews.firstObject == self) {
_scrollFixView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
_scrollFixView.hidden = YES;
[[self superview] insertSubview:_scrollFixView belowSubview:self];
}
}
- (void)removeFromSuperview
{
if (_scrollFixView) {
[_scrollFixView removeFromSuperview];
_scrollFixView = nil;
}
[super removeFromSuperview];
}
У меня была такая же проблема, поэтому я пробовал несколько вещей: -)
Это сработало для меня, но, пожалуйста, поправьте меня, если есть лучший способ.
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
if(self.navigationController.navigationBar.translucent == YES)
{
_webView.scrollView.contentOffset = CGPointMake(_webView.frame.origin.x, _webView.frame.origin.y - 54);
}
}
Итак, в основном вам нужно:
1) Добавьте метод делегирования UIWebView - webViewDidFinishLoad: 2) Затем я устанавливаю оператор if, чтобы проверить, активна ли полупрозрачная опция.
Последнее, что вам нужно сделать, конечно, если вы предоставите пользователю возможность в своем приложении.
Число после _webView.frame.origin.y
предназначено только для моего приложения. Он может отличаться для вас.
Я решил эту проблему, просто установив ограничение на WebView, установив верхнее пространство между ним и верхним окном View в 0, в результате чего NavBar перекрывает пробелы.
Одна из альтернатив методу Джеффа Краненбурга заключается в подклассе и переопределении метода UIWebView
UIWebView
подкласса UIWebView
scrollViewDidScroll:
. Это применимо только в том случае, если прокрутка отключена для вашего подкласса.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if ([[self superclass] instancesRespondToSelector:_cmd]) {
[super scrollViewDidScroll:scrollView];
}
[self fixUpScrollViewContentOffset];
}
- (void)fixUpScrollViewContentOffset
{
if (!CGPointEqualToPoint(self.scrollView.contentOffset, CGPointZero)) {
self.scrollView.contentOffset = CGPointZero;
}
}
Я уже получил его.
здесь мой логический код. Когда приложение открывает веб-сайт, вы должны получить размер своего веб-представления, а затем установить его на высоте
здесь мой код
ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) webpage.getLayoutParams();
p.height = webpage.getHeight();
// check if how long you need to set your height for webpage then set it :)
Log.e(" webpage.getHeight()", String.valueOf(webpage.getHeight()));
webpage.setLayoutParams(p);
Надеюсь, что вы возьмете мой код и мой ответ:) работает на любых устройствах даже на вкладках тоже:)