• Проблема с кастомным TabBarController в ios7 [видеовопрос]?

    Flanker_4
    @Flanker_4
    Я вот еще чего нарыл. оказывает фрейм firstViewController'a изменяет сам UINavigationController. В iOS 7 добавили возможность задавать пользовательскую анимацию смены контроллера у UINavigationController'a. Для этого в одном из новых методов делегата нужно вернуть пользовательский Animation Transition. По-умолчанию используется некая стандартная анимация, которая и поганит frame вьюхи. Т.е. окончательно все выглядит так - в методе navigationController: willShowViewController: animated: FirsViewController'у вроде как устанавливается ожидаемое значение frame - стандартная Transition выполняет анимацию перемещения между двух контроллеров, но делает детский (child) viewController полноэкранным, что в ios 7 как бы норма. - мой костыль в didShowViewController возвращает все обратно Таким образом, можно еще попытаться сделать такие два финта ушами 1) переопределить стандартную Transition Animation у NavigationController'a и тем самым убрать нежелательное изменение frame 2) посмотреть на bottomLayoutGuide у UIViewController'a. Есть подозрение, что именно на него ориентируется стандартная Transition Animation и именно по этому так устанавливает фрейм. В этом коде она равна 0 (т.е. от низу экрана до начала вьюшки 0 пикселей) и наверное по этому firsViewController заходит за bottom bar.
  • Проблема с кастомным TabBarController в ios7 [видеовопрос]?

    Flanker_4
    @Flanker_4
    Не совсем, на самом деле там такой код уже есть (я отрыл исходники)
     tabBarView.isTabBarHidding = NO;
     [tabBarView setNeedsLayout]; ///<-------вот эта строка
    


    Что касается самой проблемы. Вот посмотрите, ее можно решить, добавив в AKTabBarController.m (в секцию делегата NavigationController'a) метод

    -(void) navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
        CGRect viewControllerFrame = viewController.view.frame;
        viewControllerFrame.size.height = navigationController.view.frame.size.height-viewControllerFrame.origin.y;
        viewController.view.frame = viewControllerFrame;
    }
    


    НО, это какое-то дичайшее исправление. Мне кажется есть что-то не только лучше, но и правильнее.
    Суть проблемы в чем. При переходе на второй экран по ячейке, NavigationController увеличивает свой frame на размер bottomBar'a (попутно увеличивая frame'ы вьюшех своих дочерних ViewController'ов (в нашем случае это FirstViewController).
    А вот при обратной анимации этого не происходит, т.е. frame navigationController.view изменяется без проблемм, а у firstViewController'a, который станет видимым, почему-то нет.
    не помогает даже выделенная строчка
    _contentView.frame = (CGRect) {
            .origin.x = 0,
            .origin.y = (self.tabBarPosition == AKTabBarPositionTop) ? CGRectGetMaxY(_tabBar.frame) : 0,
            .size.width = CGRectGetWidth(self.bounds),
            .size.height = CGRectGetHeight(self.bounds) - ((!_isTabBarHidding) ? CGRectGetHeight(_tabBar.bounds) : 0)
        };
        [_contentView setNeedsLayout]; ///<--- в данном случае это вьюшка navigationcontroller'a и по идее она должна перересайзить вьюшку firstViewController'а
    
    

    почему так происходит я не знаю. То ли баг ios 7 (сомневаюсь), то ли не выполнена какая-то рекомендация по переходу с ios 6 на ios 7.
    Давайте подождем кого-то, кто уже имел дело с ios7… может он скажет что-то.
    К слову, в ios 6 все хорошо, потому как вьюшка firstViewController'а таки ресайзится.
    Самому очень хочется разобраться, в чем же причина :)
  • Работа с TableView под iOS 7?

    Flanker_4
    @Flanker_4
    >под iOS6 все работало «на ура!»

    В ios 6 данное ограничение отсутствовало.

    >да и суть в том, что проблема как раз-таки с методом cellForRowAtIndexPath, который на автомате подхватывается на iOS6, но не хочет этого делать на iOS7.

    Т.е. у Вас метод numberOfSectionsInTableView: вызывается? Есть сомнения… предположу, что в ios 7 переопределен метод addSubview: и вот эта строчка
    [self addSubview: myTableView];
    Попросту не дает никакого эффекта. Хотя может и в другом месте магия…
    вам нужно просто создать кастомную вьюшку и не насиловать alertview.
  • Проблема с segue-переходом в Storyboard?

    Flanker_4
    @Flanker_4
    Подскажите, включен ли в вашем StoryBoard'e AutoLayout? И в каком положении находится этот переключатель в StoryBoard'e из другой ветки?
  • Написать приложение для iPhone с нуля?

    Flanker_4
    @Flanker_4
    В этом и проблема

    11.3
    Apps using IAP to purchase physical goods or goods and services used outside of the App will be rejected

    Т.е. Вам стоит смотреть не в сторону приложения, а в сторону оптимизации сайта под смартфоны
  • Написать приложение для iPhone с нуля?

    Flanker_4
    @Flanker_4
    Обратите внимание, если вы хотите именно приложение и распространение его через app store, то лучше сразу почитать документ

    App Store Review Guidelines (скорей всего вам прийдется его нагуглить, так как ссылка на сайте эйпл вроде требует регистрации developer.apple.com/appstore/resources/approval/guidelines.html)
    Особенно уделите внимание разделу 11. Purchasing and currencies
  • Как правильно работать c временными данными в CoreData?

    Flanker_4
    @Flanker_4
    Ну если Вы готовы идти до конца :D, то никто же не мешает это свойство persistent сделать числовым
    0 — постоянный объект
    1 — и там и там
    2- только временный

    Но только скрыть эту магию за enum'ом
  • Как правильно работать c временными данными в CoreData?

    Flanker_4
    @Flanker_4
    Извините, не было времен продолжить нашу дискуссию

    Можно добавить к самой entity свойство, отвечающее за временность объекта. Первую таблицу заполнять записями с temp==NO. Вторую, соотвественно, наоборот. Но что-то мне подсказывает, что это немного костыльный подход.

    P.S. Очень интересный случай у Вас, дайте мне знать, если найдете какое-то более элегантное решение.
  • Как правильно работать c временными данными в CoreData?

    Flanker_4
    @Flanker_4
    А по какому событию временные (созданные из json) управляемые объекты больше не нужны?
  • Как правильно работать c временными данными в CoreData?

    Flanker_4
    @Flanker_4
    Как-то странно, я просто думал что после клика (или нажатия на done) SecondViewController скрывается и тогда не суть что там исчезает, а что нет.
    А у Вас вон оно как.
  • Как правильно работать c временными данными в CoreData?

    Flanker_4
    @Flanker_4
    Там же на SO предлагают еще одно решение:
    -добавить все объекты в nsmanagedcontext
    -не сохранять контекст(в этом случае объекты не попадут в хранилище)
    -после выбора пользователя удалить все вставленные объекты кроме выбранного, пройдясь по insertedObject
    -сохранить контекст

    Вы рассматривали такой вариант?
  • Как правильно работать c временными данными в CoreData?

    Flanker_4
    @Flanker_4
    Оу, не дочитал вопрос
    Есть еще вариант создать nsmanagedobject без контекста

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"name" inManagedObjectContext:cntx];
    id managedObj= [[<nsmanagedobject subclas> alloc] initWithEntity:entity insertIntoManagedObjectContext:nil];
    

    А потом, после выбора, просто добавить его в контекст
    Но я не знаю насколько этот подход правилен
  • Разработка приложения под OS X, проблема с глобальными NSEvent

    Flanker_4
    @Flanker_4
    Странно, я думал что
     if([event modifierFlags] == (NSControlKeyMask|NSAlternateKeyMask|NSControlKeyMask) )
    

    должно хватить, ну да ладно.
    Маленький совет, вместо
    if ([event modifierFlags] == 262401)
    Пишите
    if ([event modifierFlags] == NSControlKeyMask)
    И т.п.
    А то 262401 выглядит как магия какая-то :) эти константы есть в документации по nsevent:

    Modifier Flags
    The following constants (except for NSDeviceIndependentModifierFlagsMask) represent device-independent bits found in event modifier flags:

    enum {
    NSAlphaShiftKeyMask = 1 << 16,
    NSShiftKeyMask = 1 << 17,
    NSControlKeyMask = 1 << 18,
    NSAlternateKeyMask = 1 << 19,
    NSCommandKeyMask = 1 << 20,
    NSNumericPadKeyMask = 1 << 21,
    NSHelpKeyMask = 1 << 22,
    NSFunctionKeyMask = 1 << 23,
    NSDeviceIndependentModifierFlagsMask = 0xffff0000U
    };
  • Отображение анимированных GIF в ListView?

    Flanker_4
    @Flanker_4
    Я не очень компетентен в этом вопросе, но очень :) хочу Вам помочь
    Вы заглядывали сюда stackoverflow.com/questions/3660209/display-animated-gif?
  • Как защитить БД sqlite от копирования поставляемую вместе с приложением?

    Flanker_4
    @Flanker_4
    Можно шифровать не базу целиком, а интересующие Вас поля. Ну и такой подход более выгоден, если данные в БД могут изменяться (не нужно каждый раз шифровать БД)
  • Отображение положения и размера слоя в Photoshop

    Flanker_4
    @Flanker_4 Автор вопроса
    Да, о режиме трансформации я знаю. Но, это не удобно(хочется несколько/все слои сразу) и если к слою будет применена та же трансформация масштабирования размеры будут указаны неверно
  • Отображение положения и размера слоя в Photoshop

    Flanker_4
    @Flanker_4 Автор вопроса
    а можете предоставить пример скрипта и/или ссылку на мануал?
  • UIImageView в UITableView «летает» слева направо?

    Flanker_4
    @Flanker_4
    Это хорошо, что Вам удалось исправить проблему, но при всем уважении Вы ошибаетесь насчет
    размеры ячейки ставятся сразу правильно, как оказалось.

    Верней Вам просто повезло, что в данный момент ширина таблицы была 320 пикселей (стандартная ширина) и viewController был запущен в портретной ориентации
    Как только эту таблицу откроют в альбомной ориентации и/или если это будет айпад приложение, где ширина таблицы весьма вариативна — сразу будет видно что cell.frame.size.width != tableView.frame.size.width (на этапе вашего setData)
    Вот тестовый пример:
    files.mail.ru/FEB87BD8619840CCB3772228CAC4D153
    запустите в альбомной ориентации. Ширина таблицы в этом случае 480, а cell.frame все равно 320 и только после прокрутки оно станет 480, когда cell будет получен из [tableView dequeueReusableCellWithIdentifier:REUSER_ID], а не из [[UIItableView alloc] init…
  • Книги по дизайну интерфейсов Windows 8, Android, iOS?

    Flanker_4
    @Flanker_4
    Ну и для других платформ гуглится по тегам <название платформы> Interface Guidelines