"Истории из жизни опытного 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
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
9. CALayer: 3D Transform +
Animation
UIView transform:
Аффинное преобразование, двумерное.
Можно анимировать.
CALayer transform:
Аффинное преобразование, но уже
трехмерное. Так же есть возможность
анимировать.
Friday, July 1, 11