상단 또는 하단을 오버 스크롤하는 경우 표시되는 그라디언트를 UIWebView에서 제거하는 방법은 무엇입니까? 이 코드UIWebView에서 그라디언트 배경을 제거 하시겠습니까?
webView.backgroundColor = [UIColor whiteColor];
그냥 그라데이션의 색상을 변경, 그것을 제거하지 않습니다. 어떻게 할 수 있습니까?
(참고 : UIWebView underside과 같은 질문)
상단 또는 하단을 오버 스크롤하는 경우 표시되는 그라디언트를 UIWebView에서 제거하는 방법은 무엇입니까? 이 코드UIWebView에서 그라디언트 배경을 제거 하시겠습니까?
webView.backgroundColor = [UIColor whiteColor];
그냥 그라데이션의 색상을 변경, 그것을 제거하지 않습니다. 어떻게 할 수 있습니까?
(참고 : UIWebView underside과 같은 질문)
아하, 예 전문 용어가 실패합니다. 나는 그 그림자를 전혀 부르지 않을 것이다. 그러나 c'est la vie. 그 효과를 얻기 위해 내 형식 안전 코드가 있습니다. 요약하면 : 스크롤 뷰의 이미지 뷰 하위가 숨겨집니다. 그것은 (objectAtIndex : 0) 메쏘드만큼 변하지 않기 때문에, 애플이 webView 컨트롤의 자식을 재 배열하면 잘 동작하지만 그래디언트 효과가 스크롤에 부모 역할을하는 imageviews에 의해 적용된다는 사실에 의존한다. 보기 (실제로 웹보기의 밑줄을 긋는 스크롤보기가 있음).
{
webView.backgroundColor = [UIColor whiteColor];
for (UIView* subView in [webView subviews])
{
if ([subView isKindOfClass:[UIScrollView class]]) {
for (UIView* shadowView in [subView subviews])
{
if ([shadowView isKindOfClass:[UIImageView class]]) {
[shadowView setHidden:YES];
}
}
}
}
}
당신은 그림자를 의미? Remove UIWebView Shadow?
나는이 작업을 수행하는 방법을 발견하는 유일한 방법이었다 :
이for(UIView *aView in [[[webView subviews] objectAtIndex:0] subviews]) {
if([aView isKindOfClass:[UIImageView class]]) { aView.hidden = YES; }
}
그냥 단지의 UIWebView의 서브 뷰를 통해 단계를하고 이미지 뷰의 경우 뷰를 제거합니다.
나는 이것을 애플 스토어 앱에 넣지 않았다. 그래서 애플이 그것을 받아 들일지 모르겠다.
편집 : 브라이언의 링크는 자세한 내용을 제공합니다.
위에서 제안한 방법을 사용하면 나중에 스크롤 표시기/인세 트를 편집 할 수 없습니다. 그들은 또한 UIImageView로 표시되므로 마지막 객체를 확인해야합니다.
UIView* lastView = [[subView subviews] lastObject];
for (UIView* shadowView in [subView subviews])
{
if(shadowView!=lastView) ... <-this one is a scroll
}
UIWebView를 투명하게 만들고 스크롤을 제거합니다.
webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];
for(UIView *view in webView.subviews){
if ([view isKindOfClass:[UIImageView class]]) {
// to transparent
[view removeFromSuperview];
}
if ([view isKindOfClass:[UIScrollView class]]) {
UIScrollView *sView = (UIScrollView *)view;
for (UIView* shadowView in [sView subviews]){
//to remove shadow
if ([shadowView isKindOfClass:[UIImageView class]]) {
[shadowView setHidden:YES];
}
}
}
}
위해 나는 웹보기의있는 ScrollView의 상단과 하단에 흰색 파단을 추가하여이 작업을 수행 할 수 있었다. 필자는 WebView의 내용을 제어하므로 흰색이 괜찮음을 알 수 있습니다. 임의의 내용을로드하는 경우에는 작동하지 않습니다.
// _topCover and _bottomCover are ivar UIViews
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
// with cover views 300pt high, I couldn't scroll far enough to see the shadow,
// even in portrait on an iPad, which gives you the longest scroll distance
CGFloat coverage = 300;
_topCover = [[UIView alloc] initWithFrame:CGRectMake(0, -coverage, webView.bounds.size.width, coverage)];
_bottomCover = [[UIView alloc] initWithFrame:CGRectMake(0, webView.scrollView.contentSize.height, webView.bounds.size.width, coverage)];
_topCover.backgroundColor = [UIColor whiteColor];
_bottomCover.backgroundColor = [UIColor whiteColor];
// in case the webView is resized, e.g. by rotating the device
_topCover.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth;
_bottomCover.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;
[webView.scrollView addSubview:_topCover];
[webView.scrollView addSubview:_bottomCover];
}
webView.scrollView.contentSize.height
이 정확한 높이를 제공하도록 페이지를로드 한 후에 실행합니다. 귀하의 페이지가 동적으로 높이를 변경하는 경우 이것이 어떻게 작동하는지 잘 모르겠습니다. 내 페이지가 한 번만로드됩니다. 로드하는 경우 alloc
/init
을 건너 뛰고 효율성을 위해 처음으로 _topCover
및 _bottomCover
을 건너 뛰고 싶을 것입니다.
업데이트 :보기가 회전 할 때 위의 autoresizingMask
을 사용하는 것으로 충분하지는 않습니다.당신은 회전 후 커버의 크기를 조정하기 위해 UIWebView
들어있는 UIViewController
에 넣고해야 할 수도 있습니다
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
CGFloat coverage = 300;
_topCover.frame = CGRectMake(0, -coverage, self.webView.bounds.size.width, coverage);
_bottomCover.frame = CGRectMake(0, self.webView.scrollView.contentSize.height, self.webView.bounds.size.width, coverage);
}
내가에 구축 한 @damithH의 대답
@implementation UIWebView (Extensions)
- (void)setBackgroundAndShadowVisible:(BOOL)visible
{
self.opaque = !visible;
self.backgroundColor = [self.backgroundColor colorWithAlphaComponent:visible ? 1.0 : 0.0];
for(UIView *view in [self subviews])
{
if([view isKindOfClass:[UIImageView class]])
{
view.hidden = !visible;
}
if([view isKindOfClass:[UIScrollView class]])
{
UIScrollView *scrollView = (UIScrollView *)view;
for (UIView *shadowView in [scrollView subviews])
{
if ([shadowView isKindOfClass:[UIImageView class]])
{
shadowView.hidden = !visible;
}
}
}
}
}
@end
if (UIDevice.currentDevice.systemVersion.intValue < 7)
for (UIImageView *imageView in webView.scrollView.subviews)
if ([imageView isKindOfClass:[UIImageView class]] && imageView.image.size.width == 1)
imageView.hidden = YES;
내가 싶습니다 UIWebView에서 바운스 (bounce) 모양이 멋지게 보이도록하기 위해 이것도 찾으십시오. –
예, 이것은 가장 귀찮습니다. 솔루션에 관심이 있습니다. – MrCranky
[Remove UIWebView Shadow?] (http :// /stackoverflow.com/questions/1074320/remove-uiwebview-sh adow) – JosephH