5 авг. 2015 г.

iOS 8 Programming Fundamentals with Swift Swift, Xcode, and Cocoa Basics


By: Matt NeuburgPublisher: O'Reilly MediaFormats: Ebook (pdf)
Ebook: March 2015 Pages: 582

Move into iOS development by getting a firm grasp of its fundamentals, including the Xcode IDE, the Cocoa Touch framework, and Swift—Apple’s new programming language. With this thoroughly updated guide, you’ll learn Swift’s object-oriented concepts, understand how to use Apple’s development tools, and discover how Cocoa provides the underlying functionality iOS apps need to have.

- Explore Swift’s object-oriented concepts: variables and functions, scopes and namespaces, object types and instances
- Become familiar with built-in Swift types such as numbers, strings, ranges, tuples, Optionals, arrays, and dictionaries
- Learn how to declare, instantiate, and customize Swift object types—enums, structs, and classes
- Discover powerful Swift features such as protocols and generics
- Tour the lifecycle of an Xcode project from inception to App Store
- Create app interfaces with nibs and the nib editor, Interface Builder
- Understand Cocoa’s event-driven model and its major design patterns and features
- Find out how Swift communicates with Cocoa’s C and Objective-C APIs

Once you master the fundamentals, you’ll be ready to tackle the details of iOS app development with author Matt Neuburg’s companion guide, Programming iOS 8

4 авг. 2015 г.

Анимация placeholder`a в Textfield / Textfield placeholder animation (UIFloatLabelTextField)


            In 2013, Matt D. Smith unveiled the Float Label user interface design pattern. In short, it retains a text field's placeholder above said text field as a floating label. This label is brightly colored when the field is active, and dimly colored when a user has finished editing that field.

1. - На storyboard добавляем и кастомизируем на свой вкус UITextField

2. - Добавляем в проект класс UIFloatLabelTextField

3. - Помечаем наши UITextField и в Identity Inspector прописываем им использовать кастомный класс вместо стандартного

4. - Делаем связку наших UITextField с кодом, задаем плейсхолдерам цвет и юзаем в удовольствие.


Download from Github / Загрузить с Github

17 июл. 2015 г.

9 июл. 2015 г.

23 июн. 2015 г.

iOS Games by Tutorials, 1st Edition


Год выпуска: 2013
Автор: Mike Berg, Ray Wenderlich, Tom Bradley
Жанр: Разработка
Издательство: Raywenderlich
Язык: Английский
Формат: PDF
Качество: eBook (изначально компьютерное)
Количество страниц: 831
Описание: Научитесь делать iOS игры!
Узнайте как сделать свои собственные игры для iOS с помощью нового фреймворка - Sprite Kit.
В этой книге, вы познакомитесь примерах мини игр, как воплотить ваши идеи в реальность!
В книге охватывается как базовый так и продвинутый уровень знаний.

(With source code!)

24 мая 2015 г.

UITextField анимация / UITextField animation

Каждому из нас очень часто приходится (например в окне ввода логина / пароля) сдвигать поля ввода чтобы клавиатура не перекрывала их и пользователь видел то что он вводит. Для сдвига с места обычно достаточно простой анимации, но мы как всегда - сделаем это красиво ;)

Представим что у нас на вьюхе есть три UITextField.  Создадим массив и добавим эти UITextField в него. UITextField уже размещены в нужных нам местах. Теперь при тапе на один из них (любой) появится клавиатура которая естественно перекроет UITextField (во многих ситуациях именно так и есть, особенно на iPad при Landscape ориентации устройства. Сдвигаем:

CGAffineTransform textFieldTranslationTransform;
textFieldTranslationTransform = CGAffineTransformMakeTranslation(0, -165);

Важно помнить, что место с которого будет передвигаться UITextField - центр равен 0. Когда элементы станут на новое место, центр каждого элемента станет опять 0. Чтобы опять поставить на место, вместо "-165" ставим "165". Т.е. цифры говорят о том, что мы передвинули не В координату, а НА определенное количество пунктов.

[_textFieldsArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            
            UITextField *tField = (UITextField *)obj;
            
            [UIView animateWithDuration:0.9
                                  delay:0.05 * (double)idx
                 usingSpringWithDamping:0.5
                  initialSpringVelocity:0
                                options:UIViewAnimationOptionCurveLinear
                             animations:^{                     
                                 tField.center = CGPointApplyAffineTransform(tField.center,                                                                           textFieldTranslationTransform);
                             }
                             completion:nil];
        }];

7 мая 2015 г.

UIAlertView с блоком (без делегата) / UIAlertView with block (without delegate) iOS 7

Очень часто не хочется использовать UIAlertView - делегат для идентификации тапнутой пользователем кнопки, особенно если у Вас в контроллере UIAlertView несколько, то приходится присваивать даже tag для UIAlertView. Нашел на просторах UIAlertView с блоком. Очень упростила жизнь. Хотя во многих случаях тоже есть необходимость использовать обычный UIAlertView. Данный Tips&Tricks предназначен в основном для iOS 7, т.к. в iOS 8 уже есть UIAlertViewController (если мне не изменяет память, теперь присутствует тот же блок).

UIBAlertView *timesheetsSubmited = [[UIBAlertView alloc] initWithTitle:@"Title"
message:@"message"
cancelButtonTitle:@"cancel"
otherButtonTitles:@"ok", nil];

[timesheetsSubmited showWithDismissHandler:^(NSInteger selectedIndex,
                                             NSString *selectedTitle,
                                             BOOL didCancel) {
    if (selectedIndex == 1) {
        
        //code
    }
}];

5 мая 2015 г.

UINavigationBar анимация сокрытия-показа / UINavigationBar hide-show animation

Иногда необходимо немного больше места на экране для отображения более детального и большего количества информации. Обычно при этом прячут UINavigationBar. Почему бы это не сделать при помощи анимации:





- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.navigationController.navigationBar lt_reset];
}

#pragma mark - UINavigationBar hide/show animation methods

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat offsetY = scrollView.contentOffset.y;
    if (offsetY > 0) {
        if (offsetY >= 44) {
            [self setNavigationBarTransformProgress:1];
        } else {
            [self setNavigationBarTransformProgress:(offsetY / 44)];
        }
    } else {
        [self setNavigationBarTransformProgress:0];
        self.navigationController.navigationBar.backIndicatorImage = [UIImage new];
    }
}

- (void)setNavigationBarTransformProgress:(CGFloat)progress
{
    [self.navigationController.navigationBar lt_setTranslationY:(-44 * progress)];
    [self.navigationController.navigationBar lt_setContentAlpha:(1-progress)];
}

3 мая 2015 г.

Оптимизация производительности приложений для iOS

Книга демонстрирует, как совершенствовать, увеличивать и оптимизировать производительность приложений для операционной системы iOS. Вы быстро научитесь создавать быстрые и отзывчивые приложения, пригодные для распространения на коммерческой основе. Эта книга охватывает множество общих и вместе с тем сложных проблем, возникающих при оптимизации производительности приложений для iPhone и iPad, и подробно описывает, как эффективно их решать. Она содержит массу практических знаний, приемов, советов и рекомендаций, которые помогут вам преуспеть в конкурентном мире разработки приложений для iOS.

Издание предназначено для программистов разной квалификации, разрабатывающих мобильные приложения под iOS.