I want just leave here couple screenshots, no time for review and description. You can read about app here
Or Essential Anatomy iTunes link
Yes, I’m working in 3D4Medical company.
I want just leave here couple screenshots, no time for review and description. You can read about app here
Or Essential Anatomy iTunes link
Yes, I’m working in 3D4Medical company.
UPDATE: This solution could cause some issues on iOS 7. For more detail look .
My simple solution by writing category for UIImageView, because scroller is imageview.
How to use :)
Just setup tag for your scrollview and you will get one with scroll indicators, which are shown all the time.
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#define noDisableVerticalScrollTag 836913
#define noDisableHorizontalScrollTag 836914 @implementation UIImageView (ForScrollView) - (void) setAlpha:(float)alpha { if (self.superview.tag == noDisableVerticalScrollTag) { if (alpha == 0 && self.autoresizingMask == UIViewAutoresizingFlexibleLeftMargin) { if (self.frame.size.width < 10 && self.frame.size.height > self.frame.size.width) { UIScrollView *sc = (UIScrollView*)self.superview; if (sc.frame.size.height < sc.contentSize.height) { return; } } } } if (self.superview.tag == noDisableHorizontalScrollTag) { if (alpha == 0 && self.autoresizingMask == UIViewAutoresizingFlexibleTopMargin) { if (self.frame.size.height < 10 && self.frame.size.height < self.frame.size.width) { UIScrollView *sc = (UIScrollView*)self.superview; if (sc.frame.size.width < sc.contentSize.width) { return; } } } } [super setAlpha:alpha]; } @end |
If you want both scroll it’s easy to change code.
Now we have controller for creating events. This controller included from 4.0 iOS SDK.
The application uses table views to display EKCalendar object and EKEvent objects retrieved from an EKEventStore object. It implements EKEventViewController for viewing and editing existing EKEvents, and uses EKEventEditViewController for creating new EKEvents.
Tweeting
В предыдущих статьях писал, что хотел перевести одну интересную статью с английского, но вот нашел перевод хорошей статьи на русский. Думаю автор перевода не будет против если я копию возьму себе :)
Grand Central Dispatch, или, коротко, GCD — это низкоуровневое API, которая открывает новый способ работать с параллельными (оригинально это concurrent, а не parallel, я не знаю нормального перевода, если кто скажет — напишите в комментариях, прим. пер.) программами. На самом простом уровне понимания, методология похожа на NSOperationQueue, которая позволяет разбивать программу на независимые задачи, которые запускать параллельно или последовательно. GCD работает на более низком уровне, предоставляет большую производительность и не является частью Cocoa.
В дополнение к средствам параллельного выполнения кода, GCD также предоставляет полностью интегрированную систему обработки событий. Обработчики могут быть сконфигурированы таким образом, чтобы реагировать на события от файловых дескрипторов, системных портов и процессов, таймеров и сигналов, и на пользовательские события. Эти обработчики исполняются параллельно при помощи инфраструктуры GCD.
API GCD полностью основан на так называемых блоках, о которых я говорил в предыдущих сериях ответов на вопросы («Позвольте представить»: блоки и «Обсуждение практических аспектов использования блоков в обычном коде»). GCD можно использовать и без блоков, применяя традиционные C-шные механизмы указателей на функции и контекста, но использовать блоки гораздо проще и невероятно удобнее с практической точки зрения.
Для получения системной документации по GCD, можно набрать man dispatch в командной строке, если у вас Snow Leopard. Continue reading
Просмотр ревизии в самом приложении предотвращает путаницу и всякие проблемы с отслеживанием текущей версии.
Чтоб отслеживать версию репозитория нам нужно добавить слдеющий код bash скрипта.
1
2 3 4 5 6 7 8 9 10 |
REVISION=`svnversion -nc | /usr/bin/sed -e 's/^[^:]*://;s/[A-Za-z]//'`
APPVERSION=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${TARGET_BUILD_DIR}"/${INFOPLIST_PATH}` xported="xported" if [ $APPVERSION != $xported ]; then /usr/libexec/PlistBuddy -c "Delete :CFBundleDisplayVersion" "${TARGET_BUILD_DIR}"/${INFOPLIST_PATH} /usr/libexec/PlistBuddy -c "Add :CFBundleDisplayVersion string" "${TARGET_BUILD_DIR}"/${INFOPLIST_PATH} /usr/libexec/PlistBuddy -c "Set :CFBundleDisplayVersion $APPVERSION.$REVISION" "${TARGET_BUILD_DIR}"/${INFOPLIST_PATH} fi |
Чтоб добавить скрипт, необходимо выполнить следующие действия:
1. Зажать Ctrl+клик на фаил проекта в дереве проекта
2. Add->New Build Phase -> New Run Script Build Phase
3. Откроется окно в которое нужно вставить скрипт.
Continue reading
Это только часть статьи, скопировал с habrahabr.ru. Добавил для себя, но может кому-то пригодится тоже. Спасибо автору youROCK.
Функции для работы с Keychain достаточно низкоуровневые (в отличие от большинства фреймворков, которые работают с пользовательским интерфейсом), и используют API на языке C. В документации от Apple есть очень объемное руководство по всем вызовам, которые поддерживаются подсистемой Keychain Services, но я бы хотел показать, насколько просто можно делать базовые вещи.
При работе с вызовами на языке C, Apple в основном использует CoreFoundation. CoreFoundation использует и поддерживает практически те же самые типы данных, которые используются в Objective C с фреймворком Cocoa, и даже поддерживает прозрачное приведение типов CoreFoundation < -> Cocoa. Все вызовы CoreFoundation имеют префикс CF (ср. с NS), а имена типов получаются с помощью замены NS на CF и звездочки [*] на суффикс Ref (reference, ссылка) в конец (к примеру, NSString* < -> CFStringRef, NSArray* < -> CFArrayRef). Для работы с памятью используются CFRelease(CFTypeRef) / CFRetain(CFTypeRef), о назначении и способе использования которых можете догадаться сами.
Continue reading
Новая реклама iPad. В рекламе есть приложение созданное нашей командой :)
Возникла проблема после обновления Mac OS X и iTunes. Поломалась база iTunes и плейлисты были утеряны.
Но часть плейлистов осталась на iPhone! И их то мы и востановим.
Continue reading