• Как скролить экран с расположенным на нем UITableView и другими UIView?

    maximglobak
    @maximglobak
    iOS developer
    Одна из самый интересных тем для UI в iOS - табличная верстка и как ее оптимизировать =)
    каждый элемент оформляй как отдельную ячейку в таблице. Т.Е. вьюху "Заполни профиль" в отдельную ячейку, а "Скачивайте и запускайте приложение… " в отдельную с одним лейблом внутри.
    Дальше эти ячейки распихивай по разным секциям, например секции профиль, акции и футер. (не обязательно их подписывать) и потом для каждой секции и ячейки настраивай свою логику со своими reuseIdentifier и тп.
    Есть несколько страниц на эту тематику, например на Medium и так далее.
    Ответ написан
    1 комментарий
  • Как считать строку в objective-c?

    maximglobak
    @maximglobak
    iOS developer
    Стало интересно и решил загуглить "Objective-C console readline" и где-то на 6 месте нашел что искал =) Протестировал и все работает. Держите =)
    NSLog(@"type a text:\n");
    NSFileHandle *input = [NSFileHandle fileHandleWithStandardInput];
    NSData *inputData = [input availableData];
            
    NSString *str = [[NSString alloc] initWithData:inputData encoding:NSUTF8StringEncoding];
    NSLog(@"Text: %@", str);
    Ответ написан
    1 комментарий
  • Как подготовить картинки и иконки для адаптива?

    maximglobak
    @maximglobak
    iOS developer
    Хорошим тоном будет позаботиться о каждом =)
    Например Apple для iOS рекомендует использовать PDF для ветровых изображений.
    Для Web все привыкли использовать SVG и так далее
    Сейчас экспортировать во все форматы, например из Sketch, не является большой проблемой, но для разработчиков вы станете супер дизайнером.
    Ответ написан
    Комментировать
  • Как задать диапазон времени в swift3?

    maximglobak
    @maximglobak
    iOS developer
    Почему бы не посмотреть как это сделало Apple. Например похожий функционал есть календаре и у них для этого два покера (начало и конец). Можно конечно сделать один кастомные пикер для подбора двух дат, но есть ли в этом смысл? Удобно ли будет пользователю?
    Любое нестандартное решение требует объяснений. Но если совсем иначе никак, то можно сделать две кнопки через дефис и по каждому клику кнопки показывать дата пикер и потом присваивать заголовок кнопке в виде нужной даты. Тогда ячейка будет выглядеть следующим образов
    ——————
    Время проведения мероприятия (начало) - (конец)
    ——————
    После выполнения всех операций
    ——————
    Время проведения мероприятия ( 13:30 ) - ( 14:00 )
    ——————
    Кнопки отдельно лучше подсветить как кнопка "Загрузки" в новом AppStore
    Ответ написан
    1 комментарий
  • UIImage из JSON файла?

    maximglobak
    @maximglobak
    iOS developer
    Вот хороший метод
    guard let url = URL(string: movie.poster) else { return }
    DispatchQueue.global().async {
        if let data = try? Data(contentsOf: url) {
            DispatchQueue.main.async {
                posterImageView.image = UIImage(data: data)
            }
        }
    }

    Он загружает картинку асинхронно и потом выводит на экран.
    Но я бы посоветовал посмотреть в сторону библиотеки Kingfisher , она еще кэширует фотографии и тебе не придется каждый раз делать запрос в сеть, чтоб получить изображение
    Ответ написан
    2 комментария
  • Как лучше реализовать хранение текстовых данных в iOS приложении?

    maximglobak
    @maximglobak
    iOS developer
    Можно в текстовом файле (txt/json), который находится в проекте, а потом читать с него.
    Можно забирать текст с сервера и сохранять его в базу/файл.
    Можно создать отдельный хелпер с текстовыми константами.
    Посмотрите в сторону локализации, там все в "своем" файлике хранится.
    Ответ написан
    Комментировать
  • Можно ли публиковать приложение с Material Design в AppStore?

    maximglobak
    @maximglobak
    iOS developer
    Ограничений нет. Только если вы используете что-то, что может навредить пользователю или что-то с не явным поведением.
    У Apple и Google есть гайдлайны, которым следует придерживаться, но никто не обязан.
    В AppStore уже есть приложения с материал дизайном, например Gmail.
    Ответ написан
    Комментировать
  • Стоит ли чистить самой макбук от пыли?

    maximglobak
    @maximglobak
    iOS developer
    Я чистил, ничего страшного.
    Купите баллончик со сжатым воздухом. А дальше снимаете крышку маленькой отверткой и продуваете куллер, можно пройтись по плате.
    Обратите вниамние, что частенько такие балоничики "плюются", так что хорошо бы отключить батарею (Есть много видео, я отключил пластиковой картой)
    Если хотите все открутить и прочистить вообще все что есть в нем, то лучше к мастерам.
    Ответ написан
  • Как запустить функцию в предыдущем VC при выполнении dismiss?

    maximglobak
    @maximglobak
    iOS developer
    Можно тремя способами это сделать (можно и больше, но это как правило извращения уже).
    1) Через делагаты, можно легко найти в гугле, мне этот способ меньше всего нравится.
    2) Создать отдельный класс (мб менеджер?) Singleton, в котором будешь сохранять все нужные значение по определенной сущности
    а в первом контроллере, в методе ViewWillAppear, который вызывается каждый раз перед появлением экрана обновлять свой лейбел, данные который ты возьмешь из того самого класса-менеджера
    чаще всего такой вариант будет правильным.
    3) найти в навигейшен контроллере свой первый контроллер и ему в присвоить значение из второго контроллера.
    Т.е. при первом и втором варианте у тебя должна торчать проверти наружу, которую все могут менять, а потому в нужный момент (ViewWillAppear) обновляешь свой лебйел с этой пропертей.
    Ответ написан
    Комментировать
  • Как кастомизизировать uitableview на iOS?

    maximglobak
    @maximglobak
    iOS developer
    Если у tableView сделать alpha 0.8, то и ячейки станут полупрозрачными, в том числе и текст на них
    Ты можешь на картинку, которая находится под таблицей наложить вьюху с блюром и потом положить таблицу
    tableView.backgroundColor = [UIColor clearColor];
    потом если ячейка не кастомная, то достаточно будет присвоить прозрачный фон
    cell.backgroundColor = [UIColor clearColor];
    дальше по обстоятельствам.
    Ответ написан
    Комментировать
  • Как показать ценность сервиса пользователям?

    maximglobak
    @maximglobak
    iOS developer
    На самом деле уже давольно больной вопрос и один из вариантов привлечения пользователей - это мотивация деньгами.
    Но легенды глаголят, что тебе нужно рассказать как пользователь сможет улучшить себя или свою жизнь. Где он сможет получить прибывать в том или ином виде и сэкономить чего-либо (денег/времени).
    Как из вариантов можно завести партнеров среди точек питания, они скидку пользователям в обмен на новых посетителей.
    Ответ написан
  • Как вывести метки на карте, сгруппированные по попаданию в определенный радиус?

    maximglobak
    @maximglobak
    iOS developer
    Зависит от карты, которую вы используете.
    А эти группки называются Кластерами. В гугле можно искать по этому тегу.
    1) Можете написать логику самому
    Статья
    2)Apple Map либа
    3)Google maps от гугла
    4)Яндек - тут все печально, будет проще вставить веб вью с JS кодом
    Ответ написан
    Комментировать
  • Как открыть фотографии с canon на mac?

    maximglobak
    @maximglobak
    iOS developer
    если ты про быстрый просмотр, то выделяешь фотографию, которую хочешь открыть и нажимаешь пробел.
    Ответ написан
    Комментировать
  • TapGesture, как определить элемент который нажал, или почему не работает CollectionView при нажатии на ячейку?

    maximglobak
    @maximglobak
    iOS developer
    Для коллекции немного другой делегат, но смысл его в том же.
    Тап гестуре лучше ставить в случае когда тебе нужно тащить эту ячейку куда-то. Т.е. совершать какие-то еще действия (гестуре) с этой ячейкой.
    Если просто нужно кликнуть по ячейке, то лучше использовать делигатный метод
    collectionView:didSelectItemAtIndexPath:
    И все же немного кода для поиска ячейки в коллекции
    //Сначала регистрируешь гестуре, потом определяешь функцию, которую он вызывает и в этой функции пишешь следующее
    //Это точка нажатия относительно коллекции
        CGPoint gestureLocationInCollectionView = [gesture locationInView:self.collectionView];
    
    // А тут находим индекс пас, но при его использовании проверяй всегда есть ли он на самом деле.
        NSIndexPath *indexPathForLocation = [self.collectionView indexPathForItemAtPoint:gestureLocationInCollectionView];
    
    if (indexPathForLocation) {
    //Code here 
    }
    Ответ написан
    Комментировать
  • Выполнить функцию из другой ячейки в UIcollectionView?

    maximglobak
    @maximglobak
    iOS developer
    Если у тебя только две ячейки и ты 100% знаешь которая тебе нужна, то можно достать эту ячейку из массива ячеек у таблицы по нужному индексу
    Пример:
    let indexPath = NSIndexPath(row:1 section:0)
    if let cell = tableView.cellForRow(at: indexPath) as? customCell {
    cell?.label.text = "123"
    }
    Ответ написан
  • Как реализовать popup на iPhone?

    maximglobak
    @maximglobak
    iOS developer
    Для хвостика есть специальный контроллер
    смысл следующий, ты создаешь контроллер свой, который тебе нужно отобразить.
    У него будет следующая проперти
    (myPopoverViewController это твой контроллер, который ты хочешь отобразить внутри поповера)
    myPopoverViewController.modalPresentationStyle = UIModalPresentationPopover;
    выставляешь, как в коде выше
    Потом тебе нужно его показать функцией, которая описана ниже
    [self presentViewController:myPopoverViewController animated: YES completion: nil];

    Дальше ты конфигурируешь поповер контроллер
    UIPopoverPresentationController *presentationController =
    myPopoverViewController.popoverPresentationController;
    Указываешь направления хвостика
    presentationController.permittedArrowDirections =
    UIPopoverArrowDirectionTop;
    Потом в sourceView указываешь из какого вью тебе нужно его показывать, откуда будет расти хвостик
    presentationController.sourceView = myView;
    presentationController.sourceRect = sourceRect;
    Таким образом должно все работать
    Ответ написан
    Комментировать
  • Как лучше передавать картинки на мобильный клиент?

    maximglobak
    @maximglobak
    iOS developer
    Зависит от количества изображений и целей, если тебе нужно подгружать картинки для контента, типа новостей, то хорошо подойдет либа SDWebImage, если нужно делать для других целей, то можно написать небольшой сервис скачивания изображений у которого будет своя очередь на это дело, сама функция запроса на скачивание фотографии хорошо реализована либами obj-c AFNetworking / swift Alamofire (по сути это одно и тоже)
    Ответ написан
    Комментировать
  • Как сделать чтобы и текст второго label менялся?

    maximglobak
    @maximglobak
    iOS developer
    `tableView.reloadData()`
    Тебе нужно обновить всю таблицу, соответственно нужно вызвать функцию, которая обновляет все ячейки.
    Так же можно обновить все ячейки с анимацией
    `- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
    `
    не помню как в swift будет.
    Ответ написан
  • Как реализовать авто установки ios приложений?

    maximglobak
    @maximglobak
    iOS developer
    Нельзя.
    Максимум что вы можете сделать - это попросить установить приложение и перейти на страницу в AppStore или на личный сайт приложения. Во вторым случае вы можете сразу запустить скрипт установки, но iOS все равно спросит нужно ли устанавливать данное приложение.
    Ответ написан
    Комментировать
  • Как правильно выставить constraints?

    maximglobak
    @maximglobak
    iOS developer
    Выставляешь для левой кнопки привязку к:
    левому краю (фиксированное значение)
    вверху (фикс)
    низ (фикс)
    правому краю (до правой кнопки фикс)
    Первую кнопку привязываешь к:
    правому краю (фикс)
    вверх и низ (фикс)
    Не верен насчет левого края, но можно попробовать тоже его привязать к левой кнопкой с тем же значение, что ты привязал левую кнопку к правой.
    Потом выделяешь две кнопки и ставишь у них констрейнт для двоих "Одинаковую ширину"
    Ответ написан
    Комментировать