Π ΠΈΡ. 16.21. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌΡΠΌ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ
Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΈΠ΅ΠΌΠ°ΠΌΠΈ, ΠΈΠ·ΡΡΠ΅Π½Π½ΡΠΌΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 16.2, ΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΡΠ°ΠΉΠ» ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Laptop. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π°ΡΡΠΈΠ±ΡΡ color ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΈΠΏΡ id:
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@interface Laptop: NSManagedObject
@property (nonatomic, retain) NSString * model;
@property (nonatomic, retain) id color;
@end
Π£ΠΆΠ΅ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ. ΠΠΎ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π΅ΡΠ΅ Π»ΡΡΡΠ΅, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠΌΠΎΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π²ΡΡΠ²Π»ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ (ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ ΡΡΠΎΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ²), Π²ΡΡΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΡΡΠΎΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Π½Π° UIColor:
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
/* ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠ°ΠΊΠΎΠΌ
UIColor Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² UIKit */
#import <UIKit/UIKit.h>
@interface Laptop: NSManagedObject
@property (nonatomic, retain) NSString * model;
@property (nonatomic, retain) UIColor *color;
@end
ΠΡΠ°ΠΊ, ΠΎΡΡΠ°Π»ΠΎΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²Π΅ΡΡ ΠΈΠ·ΡΡΠ΅Π½Π½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. Π Π΄Π΅Π»Π΅Π³Π°ΡΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Laptop ΠΈ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΊΡΠ°ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ. ΠΠ°ΡΠ΅ΠΌ Π²ΡΡΠ°Π²ΠΈΠΌ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΡΠ΅ΠΊ Core Data ΠΈ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ. Π’Π°ΠΊ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΠ΄Π°Π»ΠΎΡΡ Π»ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π½ΠΎΠ²Ρ Π΄ΠΎΡΡΠ°ΡΡ Π΅Π³ΠΎ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ :
#import Β«AppDelegate.hΒ»
#import Β«Laptop.hΒ»
@implementation AppDelegate
@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
β (BOOL) application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
self.window = [[UIWindow alloc]
initWithFrame: [[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
/* Π‘Π½Π°ΡΠ°Π»Π° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ laptop Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ */
Laptop *laptop =
[NSEntityDescription
insertNewObjectForEntityForName: NSStringFromClass([Laptop class])
inManagedObjectContext: self.managedObjectContext];
laptop.model = @"model name";
laptop.color = [UIColor redColor];
NSError *error = nil;
if ([self.managedObjectContext save:&error] == NO){
NSLog(@"Failed to save the laptop. Error = %@", error);
}
/* Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ ΡΡΠΎΡ ΠΆΠ΅ laptop */
NSFetchRequest *fetch =
[[NSFetchRequest alloc]
initWithEntityName: NSStringFromClass([Laptop class])];
fetch.fetchLimit = 1;
fetch.predicate = [NSPredicate predicateWithFormat:@"color == %@",
[UIColor redColor]];
error = nil;
NSArray *laptops = [self.managedObjectContext
executeFetchRequest: fetch
error:&error];
/* ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° 1, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π»ΠΈΠΌΠΈΡ Π²ΡΠ±ΠΎΡΠΊΠΈ ΡΠ°Π²Π΅Π½ 1 */
if (laptops.count == 1 && error == nil){
Laptop *fetchedLaptop = laptops[0];
if ([fetchedLaptop.color isEqual: [UIColor redColor]]){
NSLog(@"Right colored laptop was fetched");
} else {
NSLog(@"Could not find the laptop with the given color.");
}
}
else {
NSLog(@"Could not fetch the laptop with the given color. \
Error = %@", error);
}
return YES;
}
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π» 16.1.
ΠΠ»Π°Π²Π° 17. ΠΡΠ°ΡΠΈΠΊΠ° ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ
17.0. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ΅ ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡ, ΡΡΠΎ Π²Π°ΠΌ Π΄ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π²ΠΈΠ΄Π΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ iPhone ΠΈ iPad Ρ ΠΎΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π²ΡΡΡΠ΅ΡΠ°Π»ΠΈ Π·Π°Π±Π°Π²Π½ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ Π² ΠΈΠ³ΡΠ°Ρ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ . ΠΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ΅Π΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ iOS ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Cocoa Touch ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΌΡΠ΅ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΠΊΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ»Π»Π΅Π³-Ρ ΡΠ΄ΠΎΠΆΠ½ΠΈΠΊΠΎΠ². ΠΠΎ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ, ΠΎΠ±Π»Π°Π΄Π°Ρ Π²Π΅ΡΡΠΌΠ° ΡΠΊΡΠΎΠΌΠ½ΡΠΌΠΈ Π½Π°Π²ΡΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π― Π½Π΅ Π±ΡΠ΄Ρ ΡΠ³Π»ΡΠ±Π»ΡΡΡΡΡ Π·Π΄Π΅ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠ°ΠΊΠΈΡ ΠΏΠΎΠ½ΡΡΠΈΡΡ , ΠΊΠ°ΠΊ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΠΎ Ρ ΠΎΠ΄Ρ Π΄Π΅Π»Π°. ΠΡ Π±ΡΡΡΡΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ ΠΈ ΠΏΠΎΡΡΠΈ ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΊΠΎΠ΄Ρ.
Π Cocoa Touch ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠΊΠΎΠ½ (Window) ΠΈ Π²ΠΈΠ΄ΠΎΠ² (View). ΠΡΠ»ΠΈ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠΎ Π² Π½Π΅ΠΌ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄Π½ΠΎ ΠΎΠΊΠ½ΠΎ. ΠΠΊΠ½ΠΎ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΎΠ². Π Cocoa Touch ΠΎΠΊΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° UIWindow. ΠΠ±ΡΡΠ½ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² ΡΡΠΎ ΠΎΠΊΠ½ΠΎ Π²ΠΈΠ΄Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠ°Π·Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠΈΠ΄Π°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΡΠ°ΠΌΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ (Custom Controls). ΠΡΡΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΠ΅Ρ ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΡΡ Π²ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ UIKit.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ Π²Π΅ΡΠ΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΡΡΠ°Π·Ρ, Π½ΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΡΠΉΡΠ΅ΡΡ β ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΡΠ΅Π½ΠΈΡ Π³Π»Π°Π²Ρ Π²Ρ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΡΠ»Π΅ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΆΠ΄ΡΡ Π½Π°Ρ Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ.
Apple ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΌΠΎΡΠ½ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠ΅ΠΉ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ iOS ΠΈ OS X. ΠΠ°Π»Π΅Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.
β’ UIKit β ΡΡΠΎ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΠΈΠ΄Ρ, ΠΎΠΊΠ½Π°, ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ΄ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ API Π² ΡΠΎΡΡΠ°Π² Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ API, ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ.
β’ Quartz 2D β ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌΒ» ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π² iOS. Quartz ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ Π²ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ UIKit.
β’ Core Graphics β ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ β Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ), Π·Π°Π³ΡΡΠΆΠ°ΡΡΠΈΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡΠΈΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Ρ. Π΄.
β’ Core Animation β ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ, ΡΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ Π² iOS.
ΠΡΠΈΡΡΡΠΏΠ°Ρ ΠΊ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΡΡΠ²ΠΎΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ: ΠΏΠΎΠ½ΡΡΡ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΈΠΊΡΠ΅Π»Π°ΠΌΠΈ. Π‘ ΠΏΠΈΠΊΡΠ΅Π»Π°ΠΌΠΈ Π²ΡΠ΅ ΡΡΠ½ΠΎ, Π½ΠΎ Π²ΠΎΡ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΡΠΊΠΈ? ΠΡΠΎ Π½Π΅ Π·Π°Π²ΠΈΡΡΡΠΈΠΉ ΠΎΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π°Π½Π°Π»ΠΎΠ³ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ². ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ iOS ΠΈ ΠΎΡ Π²Π°Ρ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΡΠΎΡΡ ΠΈ ΡΠΈΡΠΈΠ½Ρ, ΡΠΎ iOS ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π²Π°ΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ ΡΠΎΡΠΊΠΈ, Π° Π½Π΅ ΠΊΠ°ΠΊ ΠΏΠΈΠΊΡΠ΅Π»Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π²Π΅ΡΡ ΡΠΊΡΠ°Π½ Π½Π° iPhone 5, Π²Π°Ρ ΡΠΊΡΠ°Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΡΠΈΡΠΈΠ½Ρ 320 ΠΈ Π²ΡΡΠΎΡΡ 568. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΠΈΡΡΠΈΠ½Π½ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π° Ρ iPhone 5 ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 640 Γ 1136. Π ΡΡΠΎΠΌ ΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠ΅Π»Π΅ΡΡΡ ΡΠΎΡΠ΅ΠΊ: ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π½ΠΈΠΌΠΈ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ΄Π΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ iOS ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΎΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠΈΡΠ»ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π½Π° ΡΡΠΎΠΌ ΡΠΊΡΠ°Π½Π΅. ΠΠ° iPhone 5 ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π²Π΅Π½ 2,0. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, iOS ΡΠΌΠ½ΠΎΠΆΠ°Π΅Ρ 320 Π½Π° 2, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ, ΠΈ ΡΠΌΠ½ΠΎΠΆΠ°Π΅Ρ 568 Π½Π° 2, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΠ² ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ.
ΠΠ° ΡΠΊΡΠ°Π½Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ iOS Π½Π°ΡΠ°Π»ΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ. Π’Π°ΠΊΠΈΠ΅ ΡΠΊΡΠ°Π½Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π½ΡΡΡΡΡ ULO-ΡΠΊΡΠ°Π½Π°ΠΌΠΈ (ΠΎΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π° Upper Left Origin β Β«Π½Π°ΡΠ°Π»ΠΎ Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»ΡΒ»).
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠΎΡΠΊΠ° Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ (0; 0) β ΠΊΡΠ°ΠΉΠ½ΡΡ ΡΠΎΡΠΊΠ° Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ ΡΠΊΡΠ°Π½Π°. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠΈ X ΠΈΠ΄ΡΡ ΠΎΡ Π½Π΅Π΅ Π½Π°ΠΏΡΠ°Π²ΠΎ, Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠΈ Y β Π²Π½ΠΈΠ·. ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΠΎΡΠΊΠ° Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΎΠΉ x = 20 Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΏΡΠ°Π²Π΅Π΅, ΡΠ΅ΠΌ ΡΠΎΡΠΊΠ° Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΎΠΉ x = 10. ΠΠΎ ΠΎΡΠΈ Y ΡΠΎΡΠΊΠ° Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΎΠΉ y = 20 ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° Π½ΠΈΠΆΠ΅, ΡΠ΅ΠΌ ΡΠΎΡΠΊΠ° y = 10.
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ-Π²ΠΈΠ΄Ρ ΡΠΈΠΏΠ° UIView Π΄Π»Ρ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΈΠ³ΡΡ, ΡΡΡΠΎΠΊ ΠΈ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π²ΠΈΠ΄ΠΈΠΌΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅.
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ Π½ΠΎΠ²Π΅ΠΉΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Xcode on Apple. ΠΡΠ»ΠΈ Π½Π΅Ρ, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ OS X, ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π½ΠΎΠ²Π΅ΠΉΡΡΡ Π²Π΅ΡΡΠΈΡ Xcode.
Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π·Π΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠΊΠ°ΠΆΡ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Xcode ΠΈ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° ΠΎΡ UIView, ΠΊΡΠ΄Π° ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π½Π°Ρ ΠΊΠΎΠ΄.
1. ΠΡΠΊΡΠΎΠΉΡΠ΅ Xcode.
2. Π ΠΌΠ΅Π½Ρ File (Π€Π°ΠΉΠ») Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ New β Project (ΠΠΎΠ²ΡΠΉ β ΠΡΠΎΠ΅ΠΊΡ).
3. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠΊΡΠ°Π½Π° Π²ΡΠ±ΡΠ°Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ iOS. Π ΡΡΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½Ρ Application (ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) (ΡΠΈΡ. 17.1)