Подтвердить что ты не робот

Добавлен пробел в UIWebview - удаление пробелов UIWebView в iOS7 и iOS8

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: обновленное изображение

4b9b3361

Ответ 1

Попробуйте self.automaticallyAdjustsScrollViewInsets = NO; в ViewDidLoad.

ios 7 автоматически добавляет 64px для просмотра прокрутки. (строка состояния и панель навигации)

Ответ 2

Эта проблема влияет только на 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];
}

Ответ 3

У меня была такая же проблема, поэтому я пробовал несколько вещей: -)

Это сработало для меня, но, пожалуйста, поправьте меня, если есть лучший способ.

-(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 предназначено только для моего приложения. Он может отличаться для вас.

Ответ 4

Я решил эту проблему, просто установив ограничение на WebView, установив верхнее пространство между ним и верхним окном View в 0, в результате чего NavBar перекрывает пробелы.

Ответ 5

Одна из альтернатив методу Джеффа Краненбурга заключается в подклассе и переопределении метода 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;
  }
}

Ответ 6

Я уже получил его.

здесь мой логический код. Когда приложение открывает веб-сайт, вы должны получить размер своего веб-представления, а затем установить его на высоте

здесь мой код

     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);

Надеюсь, что вы возьмете мой код и мой ответ:) работает на любых устройствах даже на вкладках тоже:)