SlideShare a Scribd company logo
1 of 13
Download to read offline
Fun with CoreGraphics
                       как сделать презентационное приложение
                                       нескучным


                                                        Герасименко Михаил
                                                        Project Manager, Team Lead
                                                                          24.06.2011



Friday, July 1, 11
Содержание
                              От простого к сложному

                     1. Нестандартные шрифты
                     2. Переключение локализации в приложении
                     3. Скринсейвер
                     4. CALayer: Glow эффект
                     5. CALayer: 3D Transform + Animation
                     6. CAVideoLayer
                     7. Прокрутка видео



Friday, July 1, 11
Нестандартные шрифты
           1. Добавляем файл .ttf в проект.
           2. Добавляем в Info.plist ключ UIAppFonts (NSArray),
           содержащий названия шрифтов:
                     <key>UIAppFonts</key>
                     <array>
                     ! ! <string>c063002t.ttf</string>
                     </array>


           3. Используем в UIFont (UILabel, UIButton, etc):
                     [UIFont fontWithName:@"CorpoSLig" size:Size];


           В UIWebView:
                     font-family: CorpoSLig, Arial, sans-serif;


           В CoreText:
                     NSData *data = [[NSData alloc] initWithContentsOfFile:fontPath];
                     CGDataProviderRef fontProvider = CGDataProviderCreateWithCFData(data);
                     [data release];
                     !
                     CGFontRef cgFont = CGFontCreateWithDataProvider(fontProvider);
           !



Friday, July 1, 11
Переключение локализации в
                            приложении
                       Бандл (Bundle) = директория (Folder)



                Типы бандлов:
                1. Бандл приложения.
                2. Бандл ресурсов.
                3. Бандл файла проекта Xcode.
                4. Бандл локализации (lproj).
                5. ...

Friday, July 1, 11
Переключение локализации в
                            приложении
           NSString *path = [[NSBundle mainBundle] pathForResource:current ofType:@"lproj"];

           self.bundle = [[NSBundle bundleWithPath:path] retain];

           ...

           - (NSString *)localizedStringForKey:(NSString *)key comment:(NSString*)comment {
           !   return [self.bundle localizedStringForKey:key value:nil table:nil];
           }

           ...

           #define MYLocalizedString(key, commenta) 
           !   [[MYLocalization sharedLocalization] localizedStringForKey:(key) comment:
           (commenta)]

           ...

           genstrings -s MYLocalizedString ...




Friday, July 1, 11
Скринсейвер
           1. Subclass UIWindow.
                     @implementation CWindow

                     #if kCLScreensaverEnabled
                     - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {

                     ![NSObject cancelPreviousPerformRequestsWithTarget:self
                     selector:@selector(showScreenSaver) object:nil];

                     ![self performSelector:@selector(showScreenSaver) withObject:nil
                     afterDelay:kCLScreensaverDelay];
                     !
                     !return [super pointInside:point withEvent:event];
                     }

                     - (void)showScreenSaver {
                     ![AppDelegate() setScreensaverShowed:YES];
                     }
                     #endif

                     @end


           2. Установить в MainWindow.xib наш класс для window.

Friday, July 1, 11
CALayer
                     1. Любая UIView содержит один либо несколько
                        CALayer, которые отображают ее собержимое.
                     2. Общие черты: Иерархия CALayer’ов ≈ иерархия
                        UIView, занимаются отображением графики.
                     3. Отличия: CALayer не занимается обработкой
                        действий пользователя.




Friday, July 1, 11
Glow-эффект
              Используем возможность устанавливать тень для
                               CALayer:
            UIView* myView;

            CALayer* Layer = myView.layer;

            Layer.shadowColor = MegatronColor().CGColor;
            Layer.masksToBounds = false;
            Layer.shadowOpacity = 1.0f;
            Layer.shadowRadius = Intensity;
            Layer.shouldRasterize = true;
            Layer.shadowOffset = CGSizeMake(0, 0);




Friday, July 1, 11
CALayer: 3D Transform +
                               Animation
                     UIView transform:
                     Аффинное преобразование, двумерное.
                     Можно анимировать.


                     CALayer transform:
                     Аффинное преобразование, но уже
                     трехмерное. Так же есть возможность
                     анимировать.

Friday, July 1, 11
Transform+Animate:
          UIView *superView = [[UIApplication sharedApplication] keyWindow];
 !
 !       [UIView     beginAnimations:nil context:NULL];
 !       [UIView     setAnimationDuration:0.7];
 !       [UIView     setAnimationDelegate:self];
 !       [UIView     setAnimationDidStopSelector:@selector(firstAnimationDidStop:finished:context:)];
 !       [UIView     setAnimationCurve:UIViewAnimationCurveEaseIn];
 !
 !       CALayer *layer = superView.layer;
 !       CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
 !       rotationAndPerspectiveTransform.m34 = 1.0 / -5000;
         rotationAndPerspectiveTransform =
 !       ! CATransform3DRotate(rotationAndPerspectiveTransform, 90.0f * M_PI /
 !       ! ! ! ! ! ! 180.0f, 1.0f, 0.0f, 0.0f);
 !       !
 !       rotationAndPerspectiveTransform =
 !       CATransform3DScale(rotationAndPerspectiveTransform, 0.92, 0.92, 1);
 !       layer.transform = rotationAndPerspectiveTransform;
 !       [UIView commitAnimations];




Friday, July 1, 11
CAVideoLayer
             @interface CVideoView : UIView
             @property (nonatomic, retain) AVPlayer* Player;
             @end


            @implementation CVideoView
            @synthesize Player;

            -(void) dealloc {
                self.Player = nil;
                [super dealloc];
            }

            +(Class) layerClass {
                return [AVPlayerLayer class];
            }

            -(AVPlayer*) Player {
                return [(AVPlayerLayer*)[self layer] player];
            }

            -(void) setPlayer:(AVPlayer*)player
            {
                 [(AVPlayerLayer*)[self layer] setPlayer:player];
            }
            @end




Friday, July 1, 11
Прокрутка видео
             - (void)stepByFloatCount:(float)count {

             !       self.step+= count;
             !
             !       float stepRound = roundf(self.step);
             !
             !        if   (fabs(stepRound) >= 1.0) {
             !        !    [self stepByCount:stepRound];
             !        !    self.steps+= stepRound;
             !        !    self.step = self.step - stepRound;
                     }
             }

             ...

             - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

             !        CGPoint endPoint = [[touches anyObject] locationInView:self.view];
                     CGPoint dp = CGPointMake(self.startPoint.x - endPoint.x,
             !        ! ! ! ! ! ! !           self.startPoint.y - endPoint.y);

                     [self.currentItem stepByFloatCount:kCLVideoDefaultStep * dp.y];!
             }




Friday, July 1, 11
Спасибо за внимание!
                                     ул. Михайловская 25
                                     Одесса 65005, Украина
                                      www.softtechnics.biz
Friday, July 1, 11

More Related Content

What's hot

AndroidMVPHelper
AndroidMVPHelperAndroidMVPHelper
AndroidMVPHelperDataArt
 
Android Development Course in HSE lecture #3
Android Development Course in HSE lecture #3Android Development Course in HSE lecture #3
Android Development Course in HSE lecture #3Empatika
 
Принципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.DПринципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.DAndreyGeonya
 
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15MoscowJS
 
Yii development
Yii developmentYii development
Yii developmentMageCloud
 
Влад Ковташ — Yap Database
Влад Ковташ — Yap DatabaseВлад Ковташ — Yap Database
Влад Ковташ — Yap DatabaseCocoaHeads
 
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15MoscowJS
 

What's hot (7)

AndroidMVPHelper
AndroidMVPHelperAndroidMVPHelper
AndroidMVPHelper
 
Android Development Course in HSE lecture #3
Android Development Course in HSE lecture #3Android Development Course in HSE lecture #3
Android Development Course in HSE lecture #3
 
Принципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.DПринципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.D
 
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
 
Yii development
Yii developmentYii development
Yii development
 
Влад Ковташ — Yap Database
Влад Ковташ — Yap DatabaseВлад Ковташ — Yap Database
Влад Ковташ — Yap Database
 
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
 

Similar to Fun with core graphics

Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersГлеб Тарасов
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и...
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и...2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и...
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и...HappyDev
 
нестандартные интерфейсы iOS
нестандартные интерфейсы iOSнестандартные интерфейсы iOS
нестандартные интерфейсы iOSSoftTechnics
 
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKitNoveo
 
Байки из склепа. Реальный опыт разработок для iOS и Android
Байки из склепа. Реальный опыт разработок для iOS и AndroidБайки из склепа. Реальный опыт разработок для iOS и Android
Байки из склепа. Реальный опыт разработок для iOS и AndroidHeads&Hands
 
Интуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. ViewsИнтуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. ViewsГлеб Тарасов
 
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжениеШкола-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжениеГлеб Тарасов
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПKirill Chebunin
 
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSКурсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSГлеб Тарасов
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Ontico
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Oleksii Okhrymenko
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаprivate_face
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Ontico
 
Человекопонятные отчёты
Человекопонятные отчётыЧеловекопонятные отчёты
Человекопонятные отчётыbearoff
 
FPUG Dzyga presentation
FPUG Dzyga presentationFPUG Dzyga presentation
FPUG Dzyga presentationIvan Filimonov
 
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь ЧертенковImprove Group
 

Similar to Fun with core graphics (20)

Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и...
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и...2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и...
2014.12.06 01 Александр Чернышев — Нафига Козе Баян или нужен ли вам swift, и...
 
нестандартные интерфейсы iOS
нестандартные интерфейсы iOSнестандартные интерфейсы iOS
нестандартные интерфейсы iOS
 
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKit
 
Squeek School #7
Squeek School #7Squeek School #7
Squeek School #7
 
Байки из склепа. Реальный опыт разработок для iOS и Android
Байки из склепа. Реальный опыт разработок для iOS и AndroidБайки из склепа. Реальный опыт разработок для iOS и Android
Байки из склепа. Реальный опыт разработок для iOS и Android
 
Foxdevs
FoxdevsFoxdevs
Foxdevs
 
Интуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. ViewsИнтуит. Разработка приложений для iOS. Лекция 3. Views
Интуит. Разработка приложений для iOS. Лекция 3. Views
 
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжениеШкола-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
Школа-Студия разработки приложений для iOS. 3 лекция. Интерфейсы, прололжение
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOSКурсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
Курсы по мобильной разработке. 2 лекция. Построение интерфейсов в iOS
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кода
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
 
Человекопонятные отчёты
Человекопонятные отчётыЧеловекопонятные отчёты
Человекопонятные отчёты
 
FPUG Dzyga presentation
FPUG Dzyga presentationFPUG Dzyga presentation
FPUG Dzyga presentation
 
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
 

Fun with core graphics

  • 1. Fun with CoreGraphics как сделать презентационное приложение нескучным Герасименко Михаил Project Manager, Team Lead 24.06.2011 Friday, July 1, 11
  • 2. Содержание От простого к сложному 1. Нестандартные шрифты 2. Переключение локализации в приложении 3. Скринсейвер 4. CALayer: Glow эффект 5. CALayer: 3D Transform + Animation 6. CAVideoLayer 7. Прокрутка видео Friday, July 1, 11
  • 3. Нестандартные шрифты 1. Добавляем файл .ttf в проект. 2. Добавляем в Info.plist ключ UIAppFonts (NSArray), содержащий названия шрифтов: <key>UIAppFonts</key> <array> ! ! <string>c063002t.ttf</string> </array> 3. Используем в UIFont (UILabel, UIButton, etc): [UIFont fontWithName:@"CorpoSLig" size:Size]; В UIWebView: font-family: CorpoSLig, Arial, sans-serif; В CoreText: NSData *data = [[NSData alloc] initWithContentsOfFile:fontPath]; CGDataProviderRef fontProvider = CGDataProviderCreateWithCFData(data); [data release]; ! CGFontRef cgFont = CGFontCreateWithDataProvider(fontProvider); ! Friday, July 1, 11
  • 4. Переключение локализации в приложении Бандл (Bundle) = директория (Folder) Типы бандлов: 1. Бандл приложения. 2. Бандл ресурсов. 3. Бандл файла проекта Xcode. 4. Бандл локализации (lproj). 5. ... Friday, July 1, 11
  • 5. Переключение локализации в приложении NSString *path = [[NSBundle mainBundle] pathForResource:current ofType:@"lproj"]; self.bundle = [[NSBundle bundleWithPath:path] retain]; ... - (NSString *)localizedStringForKey:(NSString *)key comment:(NSString*)comment { ! return [self.bundle localizedStringForKey:key value:nil table:nil]; } ... #define MYLocalizedString(key, commenta) ! [[MYLocalization sharedLocalization] localizedStringForKey:(key) comment: (commenta)] ... genstrings -s MYLocalizedString ... Friday, July 1, 11
  • 6. Скринсейвер 1. Subclass UIWindow. @implementation CWindow #if kCLScreensaverEnabled - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { ![NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(showScreenSaver) object:nil]; ![self performSelector:@selector(showScreenSaver) withObject:nil afterDelay:kCLScreensaverDelay]; ! !return [super pointInside:point withEvent:event]; } - (void)showScreenSaver { ![AppDelegate() setScreensaverShowed:YES]; } #endif @end 2. Установить в MainWindow.xib наш класс для window. Friday, July 1, 11
  • 7. CALayer 1. Любая UIView содержит один либо несколько CALayer, которые отображают ее собержимое. 2. Общие черты: Иерархия CALayer’ов ≈ иерархия UIView, занимаются отображением графики. 3. Отличия: CALayer не занимается обработкой действий пользователя. Friday, July 1, 11
  • 8. Glow-эффект Используем возможность устанавливать тень для CALayer: UIView* myView; CALayer* Layer = myView.layer; Layer.shadowColor = MegatronColor().CGColor; Layer.masksToBounds = false; Layer.shadowOpacity = 1.0f; Layer.shadowRadius = Intensity; Layer.shouldRasterize = true; Layer.shadowOffset = CGSizeMake(0, 0); Friday, July 1, 11
  • 9. CALayer: 3D Transform + Animation UIView transform: Аффинное преобразование, двумерное. Можно анимировать. CALayer transform: Аффинное преобразование, но уже трехмерное. Так же есть возможность анимировать. Friday, July 1, 11
  • 10. Transform+Animate: UIView *superView = [[UIApplication sharedApplication] keyWindow]; ! ! [UIView beginAnimations:nil context:NULL]; ! [UIView setAnimationDuration:0.7]; ! [UIView setAnimationDelegate:self]; ! [UIView setAnimationDidStopSelector:@selector(firstAnimationDidStop:finished:context:)]; ! [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; ! ! CALayer *layer = superView.layer; ! CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity; ! rotationAndPerspectiveTransform.m34 = 1.0 / -5000; rotationAndPerspectiveTransform = ! ! CATransform3DRotate(rotationAndPerspectiveTransform, 90.0f * M_PI / ! ! ! ! ! ! ! 180.0f, 1.0f, 0.0f, 0.0f); ! ! ! rotationAndPerspectiveTransform = ! CATransform3DScale(rotationAndPerspectiveTransform, 0.92, 0.92, 1); ! layer.transform = rotationAndPerspectiveTransform; ! [UIView commitAnimations]; Friday, July 1, 11
  • 11. CAVideoLayer @interface CVideoView : UIView @property (nonatomic, retain) AVPlayer* Player; @end @implementation CVideoView @synthesize Player; -(void) dealloc { self.Player = nil; [super dealloc]; } +(Class) layerClass { return [AVPlayerLayer class]; } -(AVPlayer*) Player { return [(AVPlayerLayer*)[self layer] player]; } -(void) setPlayer:(AVPlayer*)player { [(AVPlayerLayer*)[self layer] setPlayer:player]; } @end Friday, July 1, 11
  • 12. Прокрутка видео - (void)stepByFloatCount:(float)count { ! self.step+= count; ! ! float stepRound = roundf(self.step); ! ! if (fabs(stepRound) >= 1.0) { ! ! [self stepByCount:stepRound]; ! ! self.steps+= stepRound; ! ! self.step = self.step - stepRound; } } ... - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { ! CGPoint endPoint = [[touches anyObject] locationInView:self.view]; CGPoint dp = CGPointMake(self.startPoint.x - endPoint.x, ! ! ! ! ! ! ! ! self.startPoint.y - endPoint.y); [self.currentItem stepByFloatCount:kCLVideoDefaultStep * dp.y];! } Friday, July 1, 11
  • 13. Спасибо за внимание! ул. Михайловская 25 Одесса 65005, Украина www.softtechnics.biz Friday, July 1, 11