Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 28

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

self.myScrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;


Рис. 1.63. Π§Π΅Ρ€Π½Ρ‹Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ справа ΠΈ снизу ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°


Одна ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… особСнностСй ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ° Π½Π° страницы. Она Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠ΅, Π½ΠΎ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠ° прСкращаСтся, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ страницу. ВСроятно, Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Ссли Π²Π°ΠΌ доводилось ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Photos (Π€ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ) Π² iPhone ΠΈΠ»ΠΈ iPad. ΠŸΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ скольТСниСм. КаТдоС скольТСниС ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π½Π° экранС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ. ΠŸΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠΌ скольТСнии Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅Ρ‚Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎ самого Π½Π°Ρ‡Π°Π»Π° ΠΈΠ»ΠΈ Π΄ΠΎ самого ΠΊΠΎΠ½Ρ†Π°. Когда начинаСтся ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²ΠΈΠ΄ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠ° останавливаСтся Π½Π° этом ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΠΎΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€Π°Π³ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° экранС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, анимация ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ прСрываСтся. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ° Π½Π° страницы. Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Π΅Π΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ. Π’Π΅ΡΡŒ дальнСйший рассказ останСтся нСпонятСн, Ссли Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ выглядит ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ Ρ€Π°Π·Π±ΠΈΠ²ΠΊΡƒ Π½Π° страницы.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с ΠΊΠΎΠ΄ΠΎΠΌ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‚Ρ€ΠΈ изобраТСния: iPhone, iPad ΠΈ MacBook Air. КаТдоС ΠΈΠ· Π½ΠΈΡ… я помСстил Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²ΠΈΠ΄ Ρ‚ΠΈΠΏΠ° image view, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠ» эти Π²ΠΈΠ΄Ρ‹ ΠΊ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ. Π—Π°Ρ‚Π΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΠ²ΠΊΡƒ Π½Π° страницы, задавая для свойства pagingEnabled ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ YES:


β€” (UIImageView *) newImageViewWithImage:(UIImage *)paramImage

frame:(CGRect)paramFrame{


UIImageView *result = [[UIImageView alloc] initWithFrame: paramFrame];

result.contentMode = UIViewContentModeScaleAspectFit;

result.image = paramImage;

return result;


}

β€” (void)viewDidLoad{

[super viewDidLoad];


UIImage *iPhone = [UIImage imageNamed:@"iPhone"];

UIImage *iPad = [UIImage imageNamed:@"iPad"];

UIImage *macBookAir = [UIImage imageNamed:@"MacBookAir"];


CGRect scrollViewRect = self.view.bounds;


self.myScrollView = [[UIScrollView alloc] initWithFrame: scrollViewRect];

self.myScrollView.pagingEnabled = YES;

self.myScrollView.contentSize = CGSizeMake(scrollViewRect.size.width *

3.0f, scrollViewRect.size.height);

[self.view addSubview: self.myScrollView];


CGRect imageViewRect = self.view.bounds;

UIImageView *iPhoneImageView = [self newImageViewWithImage: iPhone

frame: imageViewRect];

[self.myScrollView addSubview: iPhoneImageView];


/* Π”ля ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ страницу измСняСм ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π° с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΠΎΡΠΈ X. */

imageViewRect.origin.x += imageViewRect.size.width;

UIImageView *iPadImageView = [self newImageViewWithImage: iPad

frame: imageViewRect];

[self.myScrollView addSubview: iPadImageView];


/* Π”ля ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ страницу измСняСм ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π° с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΠΎΡΠΈ X. */

imageViewRect.origin.x += imageViewRect.size.width;

UIImageView *macBookAirImageView =

[self newImageViewWithImage: macBookAir

frame: imageViewRect];

[self.myScrollView addSubview: macBookAirImageView];


}


Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ страницы, содСрТимоС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒ (рис. 1.64).


Рис. 1.64. ΠŸΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠ° содСрТимого Π² Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ поддСрТиваСтся Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ° Π½Π° страницы

1.24. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π²Π΅Π±-страниц с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ UIWebView

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

НСобходимо динамичСски Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π²Π΅Π±-страницу прямо Π² вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для iOS.

РСшСниС

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ классом UIWebView.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Π’Π΅Π±-Π²ΠΈΠ΄ (Web View) β€” это ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Safari ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² систСму iOS ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Π‘Π΅Ρ‚ΠΈ. Класс UIWebView позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² прилоТСниях для iOS всю ΠΌΠΎΡ‰ΡŒ Safari. ВсС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, β€” ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Π΅Π±-Π²ΠΈΠ΄ Π² вашСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ:

β€’ loadData: MIMEType: textEncodingName: baseURL: β€” Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π² Π²Π΅Π±-Π²ΠΈΠ΄ экзСмпляр класса NSData;

β€’ loadHTMLString: baseURL: β€” Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π² Π²Π΅Π±-Π²ΠΈΠ΄ экзСмпляр класса NSString. Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ HTML-ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π΅ ΠΌΠΎΠ³ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€;

β€’ loadRequest: β€” Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ экзСмпляр класса NSURLRequest. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ пригодится Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π² Π²Π΅Π±-Π²ΠΈΠ΄, располоТСнный Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ содСрТимоС, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ URL.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. НачнСм с Ρ„Π°ΠΉΠ»Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° нашСго Π²ΠΈΠ΄Π°:


#import Β«ViewController.hΒ»


@interface ViewController ()

@property(nonatomic, strong) UIWebView *myWebView;

@end


@implementation ViewController

Π’Π΅ΠΏΠ΅Ρ€ΡŒ я Ρ…ΠΎΡ‡Ρƒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π² Π²Π΅Π±-Π²ΠΈΠ΄ строку iOS 7 Programming Cookbook. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ ΠΈ Ρ‡Ρ‚ΠΎ наш Π²Π΅Π±-Π²ΠΈΠ΄ способСн ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ насыщСнный (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ) тСкст, я Π½Π° этом Π½Π΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡΡŒ ΠΈ Π²Ρ‹Π΄Π΅Π»ΡŽ слово Cookbook ΠΏΠΎΠ»ΡƒΠΆΠΈΡ€Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ тСкст ΠΎΡΡ‚Π°Π²Π»ΡŽ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (рис. 1.65):

β€” (void)viewDidLoad{

[super viewDidLoad];


self.myWebView = [[UIWebView alloc] initWithFrame: self.view.bounds];

[self.view addSubview: self.myWebView];


NSString *htmlString = @"iOS 7 Programming <strong>Cookbook</strong>";

[self.myWebView loadHTMLString: htmlString

baseURL: nil];

}



Рис. 1.65. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСкста Π² Π²Π΅Π±-Π²ΠΈΠ΄

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Π±-Π²ΠΈΠ΄ΠΎΠΌ β€” Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π² Π½Π΅Π³ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ URL. Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ loadRequest:. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ страницу сайта Apple Π² Π²Π΅Π±-Π²ΠΈΠ΄, располоТСнный Π² нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для iOS (рис. 1.66):


β€” (void)viewDidLoad{

[super viewDidLoad];


self.myWebView = [[UIWebView alloc] initWithFrame: self.view.bounds];

self.myWebView.scalesPageToFit = YES;

[self.view addSubview: self.myWebView];


NSURL *url = [NSURL URLWithString:@"http://www.apple.com"];

NSURLRequest *request = [NSURLRequest requestWithURL: url];


[self.myWebView loadRequest: request];

}


Рис. 1.66. Π’Π΅Π±-Π²ΠΈΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π° домашняя страница Apple


ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π² Π²Π΅Π±-Π²ΠΈΠ΄ загрузится содСрТимоС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ‚ΡƒΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ. НавСрноС, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Safari Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ экрана появляСтся Ρ‚ΠΎΠ½ΠΊΠΈΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ процСсса, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ вашС устройство занято Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° (рис. 1.67).


Рис. 1.67. Π˜Π½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ процСсса Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ


Π’ iOS эта Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ дСлСгирования. ΠœΡ‹ сдСлаСм подписку Π½Π° Π΄Π΅Π»Π΅Π³Π°Ρ‚ Π²Π΅Π±-Π²ΠΈΠ΄Π°, ΠΈ Π²Π΅Π±-Π²ΠΈΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»Π΅Π³Π°Ρ‚ станСт Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚. Когда Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡ‚ Π²Π΅Π±-Π²ΠΈΠ΄Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС. ВсС это ΠΌΡ‹ сдСлаСм, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² свойство delegate Π²Π΅Π±-Π²ΠΈΠ΄Π°. Π”Π΅Π»Π΅Π³Π°Ρ‚ Π²Π΅Π±-Π²ΠΈΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ UIWebViewDelegate.

ИдСм дальшС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ нашСго Π²ΠΈΠ΄Π° нСбольшой ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ процСсса. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΡ‚Π΅ΠΊΠ°ΡŽΡ‰Π΅Π³ΠΎ процСсса ΡƒΠΆΠ΅ имССтся Π² составС прилоТСния ΠΈ ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ сами. Π£ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ этим ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° setNetworkActivityIndicatorVisible:, относящСгося ΠΊ UIApplication. Π˜Ρ‚Π°ΠΊ, Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ„Π°ΠΉΠ»Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π²ΠΈΠ΄Π°:


@interface ViewController () <UIWebViewDelegate>

@property(nonatomic, strong) UIWebView *myWebView;

@end


@implementation ViewController

ΠŸΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ· Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅ UIWebViewDelegate:

 webViewDidStartLoad: β€” вызываСтся, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΈΠ΄ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ содСрТимого;

 webViewDidFinishLoad: β€” вызываСтся, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΈΠ΄ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ содСрТимого;

 webView: didFailLoadWithError: β€” вызываСтся, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΈΠ΄ останавливаСт Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ содСрТимого, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·-Π·Π° возникшСй ошибки ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Ρ‹Π²Π° сСтСвого соСдинСния:

β€” (void)webViewDidStartLoad:(UIWebView *)webView{

[[UIApplication sharedApplication]

setNetworkActivityIndicatorVisible: YES];

}


β€” (void)webViewDidFinishLoad:(UIWebView *)webView{

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible: NO];

}


β€” (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible: NO];

}


β€” (void)viewDidLoad{

[super viewDidLoad];


self.myWebView = [[UIWebView alloc] initWithFrame: self.view.bounds];

self.myWebView.delegate = self;

self.myWebView.scalesPageToFit = YES;

[self.view addSubview: self.myWebView];


NSURL *url = [NSURL URLWithString:@"http://www.apple.com"];

NSURLRequest *request = [NSURLRequest requestWithURL: url];


[self.myWebView loadRequest: request];


}