سؤال

أرغب في إضافة عرض ويب إلى تطبيقي بنسبة 60٪ (مثل رأينا في Safari في استعراض عرض النوافذ الأخرى):

alt text

لاحظ كيف يبدو المحتوى لطيفا وتعيسا!

إذا حاولت إضافة نفس طريقة العرض الخاصة بي إلى تطبيقي:

NSURL *url = [NSURL URLWithString:@"http://www.google.co.uk?q=hello"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)];
webView.delegate=self;
[webView loadRequest:request];  
[self.view addSubview:webView];

باستخدام التحول التالي:

[webView setTransform:CGAffineTransformMakeScale(0.6, 0.6)];

alt text

.. مقياس هو حقا نوعية سيئة للغاية ويبدو أنه لا يوجد أي مكافحة التعرج.

هل يعرف أحد لماذا يحدث هذا أو يكون لديك اقتراح حول كيفية إصلاحه؟

شكرا! نيك.

هل كانت مفيدة؟

المحلول

احسب حل!

قم بتناول لقطة من WebView، وإضافها إلى UiimageView وتغيير حجمها

UIGraphicsBeginImageContext(webView.bounds.size);
[webView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(webView.bounds.x, webView.bounds.y, webView.frame.size.width, webView.size.height)];
imageView.image = viewImage;
[self addSubview:imageView];
[imageView release];

webView.hidden = YES;

يبدو أن تعمل بشكل جيد!

نقطة واحدة لملاحظة .. إذا كنت ترغب في القيام بذلك بمجرد تحميل WebView، فأنت بحاجة إلى إرجاء الإجراء بحلول فترة قصيرة (اخترت 10 من الثانية!)

مثل ذلك:

-(void)deferLoading
{
    webViewHasActuallyLoaded = YES;
    [self setNeedsLayout];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    [NSTimer scheduledTimerWithTimeInterval: 1.0/10.0 target:self selector:@selector(deferLoading) userInfo:nil repeats:NO];
}

هتافات للحصول على اقتراحات أعلاه! نيك.

نصائح أخرى

لماذا لا تجعل فقط عرض الويب أصغر؟ يجب أن يجعل المحتوى بجودة عالية في الحجم الأصغر.

إذا كنت بحاجة إلى تحريك التغيير في الحجم، يمكنك ضبط minificationFilter على طبقة عرض الويب للحصول على جودة معقولة:

[[webView layer] setMinificationFilter:kCAFilterLinear];

في تجاوز UiviewController الخاص بك

  • (باطلة) phaceviewitems: (UIInterfaceorationation) interfaceorationation

وجعل الإطار UIWebView الخاص بك .origin.x & frame.origin.y القيم الصحيحة. معرفة ما إذا كانت هذه هي النتيجة التي تبحث عنها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top