Вам нужна куча волшебства CoreAnimation:
- (void) hideShadowInLayer:(CALayer *) layer
{
for (CALayer *l in layer.sublayers) {
l.shadowOpacity = 0;
[self hideShadowInLayer:l];
}
}
- (void) hideShadows
{
[CATransaction begin];
[CATransaction setValue:(id) kCFBooleanTrue forKey:kCATransactionDisableActions];
[self hideShadowInLayer:webView.layer];
[CATransaction commit];
}
Вам нужно выполнить метод hideShadows
где-нибудь ПОСЛЕ загрузки документа и пока вы прокручиваете его (я думаю, scrollViewDidScroll
из webView.scrollView.delegate
- хорошее место). Вам также необходимо включить QuartzCore
framework в ваш проект.
Что здесь происходит:
В любом представлении для визуализации используется нечто, называемое layer
. Слои могут иметь свою собственную иерархию, и каждый слой может иметь свою собственную границу и тень, поэтому раздражающий вас кадр является тенью одного из них. Плохая вещь - UIWebView воссоздает его во время прокрутки - поэтому вам нужно постоянно использовать этот метод. И я думаю, что shadowOpacity
имеет прикрепленную к нему анимацию по умолчанию, поэтому вам нужно CATransaction, чтобы отключить ее.