พื้นหลัง UIWebView ถูกตั้งค่าเป็น Clear Color แต่ไม่โปร่งใส


140

ฉันกำลังพัฒนาแอปพลิเคชั่น iOS 4 โดยใช้ iOS SDK เวอร์ชันล่าสุดและ XCode 4.2

ฉันมี XIB กับที่UIWebViewมีอัลฟา = 1.0 , พื้นหลังชุดสีใสและทึบแสงไม่ได้ตั้งค่า ใน XIB นี้ฉันตั้งค่าภาพเป็นพื้นหลังด้วยรหัสนี้:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"AboutBackground.png"]];
        self.view.backgroundColor = background;
        [background release];
    }
    return self;
}

The UIWebViewกำลังแสดง html แบบคงที่:

<html><head></head><body style=\"margin:0 auto;text-align:center;background-color: transparent; color:white\">...</body></html>

บนตัวจำลอง iOS 5 พื้นหลังของมันจะโปร่งใส แต่บนอุปกรณ์ iOS 4 จะเป็นสีเทา

เบาะแสใด ๆ


ลองใส่ UIImageView บน webview ใน interface builder และตั้งค่ารูปภาพของคุณ
Stas

ขอบคุณสำหรับคำตอบของคุณ แต่มุมมองเว็บไม่เต็มหน้าจอ
VansFannel

1
เป็นไปได้ที่ซ้ำกันของวิธีการทำให้ UIWebVIew โปร่งใส
Vladimir

คำตอบ:


360

ตั้งค่าด้วย:

[webView setBackgroundColor:[UIColor clearColor]];
[webView setOpaque:NO];

3
สิ่งนี้ใช้ได้สำหรับฉันเท่านั้นหากฉันตั้งค่าสีพื้นหลังและความโปร่งแสงหลังจากเรียก loadHTMLString ดูเหมือนว่า loadHTMLString จะรีเซ็ตทั้งสองค่า
Justin Anderson

1
ฉันรู้ว่าคำถามนั้นมีไว้สำหรับ iOS แต่ถ้าสำหรับ OSX คำถามและคำตอบนี้จะช่วยแก้ปัญหาและอาจช่วยผู้ที่ใช้ iOS ด้วยเช่นกัน
Volomike

โซลูชันนี้ยังคงทำงานใน iOS 12.1, Xcode 10.1 และ Swift
Bhavin_m


9

นอกเหนือจากการตั้งค่าพื้นหลังของ webview ให้เป็นสีที่ชัดเจนแล้วตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าทึบแสงเป็นเท็จ


ขอบคุณสำหรับคำตอบของคุณ แต่ไม่ได้ตั้งค่าทึบบนตัวสร้างส่วนต่อประสาน
VansFannel

ลองตั้งค่าหลังจากเรียกใช้ [super viewDidLoad: animated]; .
Elegia

สวัสดีฉันมีปัญหาเดียวกัน .. ทำงานบน ios5 แต่พื้นหลังสีเทาบน ios4 คุณแก้ปัญหาอย่างไร
user542584


3

คุณสามารถลองใช้รหัสนี้ (ฉันรู้ว่ามันไม่ปลอดภัย แต่ใช้ได้กับ ios5):

- (void)makeBodyBackgroundTransparent {
        for (UIView *subview in [webView subviews]) {
            [subview setOpaque:NO];
            [subview setBackgroundColor:[UIColor clearColor]];
        }
        [webView setOpaque:NO];
        [webView setBackgroundColor:[UIColor clearColor]];
}


3
NSString *content=@"example clear background color UIWebview";
NSString *style=[NSString stringwithformat:@"<html><head><style>body {background-color:transparent;}</style></head><body>%@</body></html>",content];
[myWebview loadhtmlstring:style baseurl:nil];

1

สำหรับวัตถุประสงค์

webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];

โปรดรวมสิ่งนี้ไว้ในรหัส HTML ของคุณ:

<body style="background-color: transparent;">

หรือ

 <body style="background:none">

0

เวอร์ชั่น Swift ล่าสุด (ตามต้องการ):

lazy var webView: UIWebView = {
    let view = UIWebView()
    view.delegate = self
    view.backgroundColor = .clear
    view.isOpaque = false
    return view
}()

ลบผู้รับมอบสิทธิ์หากไม่จำเป็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.