Anonymous
Ты права
Vitaliy
А что получше есть?
Нет лучше или хуже, випер всего лишь паттерн, я бы не рекомендовал начинать изучение программиросани с него
Ilkhom
Поч?
потом поймешь
Anonymous
Прокидывать инфу конечно уебищно в рамках даже одного модуля
Anonymous
Да я то умею программировать
Vitaliy
Поч?
Потому что выбор паттерна в конкретном месте должен быть связан с нагруженностью этого места, а пихать всюду без разбора – признак непонимания
Anonymous
Ну на уровне студента
Lee Mi Hyun
Я видала примеры на вайпере, и он впрямь кажется хорошей архитектурой, во всяком случае, предпочла бы его той параше, что у нас творится, без колебаний. Другое дело, что во многих случаях архитектура просто навязана логикой приложения, поэтому "под випер делать все" - такого в принципе не может быть.
Anonymous
Не везде он нужен
Lee Mi Hyun
до спиннеров в животе
Lee Mi Hyun
Вот mvvm вообще не люблю
Lee Mi Hyun
В твоей компании разработка это не ключевое направление, да?
Дело не в этом, а в том, что менеджеры не читают книжки про чистый код
Lee Mi Hyun
я работаю в Grand Parade, мы пишем всякие приложения для William Hill (онлайн-ставки, казино всякие)
Lee Mi Hyun
Grand Parade занимается чисто разработкой
Anonymous
Оо, ну это у многих проблема, с толковым руководством
Lee Mi Hyun
И является с некоторых пор частью William Hill
Anonymous
А я в s media link, для моего города довольно большая компания :))
Lee Mi Hyun
хуиз забыли
Dmitry
в конце дня будут хайлайты?
Ilkhom
mvvm хорошая архитектура для иос, а точнее мввм+роутер
Anonymous
а точнее мввм+роутер-реактивка
Ivan
Угу и сразу вайпер
Ivan
Тогда уже
Ivan
А репутация?
Lee Mi Hyun
Вообще-то в странах, где онлайн-ставки легальны, никакого фу-фу по этому поводу нет
Илья
Заходишь в любой айос канал а там опять вайпер
Alexander
О, срач о вайпере) это уже классика)) хайповая тема. Вставлю пару копеек. Вайпер как любой паттерн это только рекомендация как решать определенную проблему. И пихать его везде хуже чем не пихать нигде, т.к. этот паттерн сильнее всего усложняет архитектуру и без осознания действительно ли он нужен лучше его не использовать. Начните с SOLID и базовых паттернов и тогда viper это просто более продвинутый паттерн из базовых. Попробуйте MVP и от него уже естественным путем придете к viper)
Alexander
Ну ок, назовем это обсуждение)
Илья
Для баланса скорости и робастности в условиях эволюционирующих требований последнее время юзаю какой-то адовый гибрид: - все разбивается на модули по условным сценариям - moya хорошо разбирается с нетворком - в рамках модуля есть нетворк сервис предоставляющий апи для модуля - стор сервис модуля делает то же самое для Realm - ReSwift обеспечивает хранение стейта (1+ сабстейтов на модуль), экшны и однонаправленные биндинги - диспатчер принимает все запросы из прослойки вью и работает со стейтом, стором и нетворком, отдавая апдейты через события ReSwift - слой вью состоит из презентера, конвертирующего модели в модели для вью, собственно вью (протокол, которому конформится какой-нибудь вьюконтроллер) и интерактора, который принимает сообщения от вью и разруливает с диспатчером - роутинг внутри модуля и часто вне модуля просто на сегах, потому что ReSwift все равно хранит стейт приложения и передавать ничего между вью не нужно - есть роутер, который слушает некие события ReSwift для исключительных случаев Звучит как очередной говновысер, еще и тяжеленький, но сска насколько проще его поддерживать и изменять по сравнению с вайпером, при аналогично жесткой структуре
Lee Mi Hyun
Для баланса скорости и робастности в условиях эволюционирующих требований последнее время юзаю какой-то адовый гибрид: - все разбивается на модули по условным сценариям - moya хорошо разбирается с нетворком - в рамках модуля есть нетворк сервис предоставляющий апи для модуля - стор сервис модуля делает то же самое для Realm - ReSwift обеспечивает хранение стейта (1+ сабстейтов на модуль), экшны и однонаправленные биндинги - диспатчер принимает все запросы из прослойки вью и работает со стейтом, стором и нетворком, отдавая апдейты через события ReSwift - слой вью состоит из презентера, конвертирующего модели в модели для вью, собственно вью (протокол, которому конформится какой-нибудь вьюконтроллер) и интерактора, который принимает сообщения от вью и разруливает с диспатчером - роутинг внутри модуля и часто вне модуля просто на сегах, потому что ReSwift все равно хранит стейт приложения и передавать ничего между вью не нужно - есть роутер, который слушает некие события ReSwift для исключительных случаев Звучит как очередной говновысер, еще и тяжеленький, но сска насколько проще его поддерживать и изменять по сравнению с вайпером, при аналогично жесткой структуре
Ничо не высер, пиши статью да
Ivan
Нет вызовов, вот начинается инжениринг
Ivan
Ты ведь в курсе что лет 6-7 назад никто не спрашивал на собеседованиях про него, а потом вдруг резко началось
Alexander
Для баланса скорости и робастности в условиях эволюционирующих требований последнее время юзаю какой-то адовый гибрид: - все разбивается на модули по условным сценариям - moya хорошо разбирается с нетворком - в рамках модуля есть нетворк сервис предоставляющий апи для модуля - стор сервис модуля делает то же самое для Realm - ReSwift обеспечивает хранение стейта (1+ сабстейтов на модуль), экшны и однонаправленные биндинги - диспатчер принимает все запросы из прослойки вью и работает со стейтом, стором и нетворком, отдавая апдейты через события ReSwift - слой вью состоит из презентера, конвертирующего модели в модели для вью, собственно вью (протокол, которому конформится какой-нибудь вьюконтроллер) и интерактора, который принимает сообщения от вью и разруливает с диспатчером - роутинг внутри модуля и часто вне модуля просто на сегах, потому что ReSwift все равно хранит стейт приложения и передавать ничего между вью не нужно - есть роутер, который слушает некие события ReSwift для исключительных случаев Звучит как очередной говновысер, еще и тяжеленький, но сска насколько проще его поддерживать и изменять по сравнению с вайпером, при аналогично жесткой структуре
Ну я так понял у тебя все поделено на классы с разделением обязанностей. При этом у тебя уже есть mvp и роутеры. А это возможно как раз и получился тот же вайпер. Просто ты не называл это вайпером и не раскидывал по папочкам по viper. Да и никто не говорил что сделать хорошо поддерживаемую архитектуру нельзя не применив вайпер по рамблеру
Alexander
Ты ведь в курсе что лет 6-7 назад никто не спрашивал на собеседованиях про него, а потом вдруг резко началось
SOLID это просто аббревиатура принципов которую чувак придумал не помню как его зовут. А принципы эти уже давно были
Alexander
Майкл Фэзерс в википедии написано
Alexander
Ну да, и Роберт Мартин
Ilkhom
robert == bob
Денис
Какие еще полезные каналы по ios разработке посоветуете? Знаю @mobile_jobs и @mobile_jobs_talk
JV
https://t.me/iosgr
JV
народ, есть вопрос, который черт знает как решить. Как сделать так, чтоб для картинки, например, на 4 - 5s были одни констрейнты, а на 6- 7+ другие? Причем все в одной ориентации (пожтому сайз кассы и не подходят)
JV
классы
Ivan
Видимо только кодом
JV
Видимо только кодом
что ты именно имеешь ввиду
Ivan
Ну определять что за модель и ставить нужные constraints
Anonymous
Привязываешь оутлеты к контроллеру
Anonymous
и там устанавливаешь, в зависисимости от устройств
JV
Ну определять что за модель и ставить нужные constraints
а если это 5 картинок, и у каждой по 4 констрейнта. Ну такое, это первое , что пришло на ум
Anonymous
оутлеты констрейнтов
JV
а если это 5 картинок, и у каждой по 4 констрейнта. Ну такое, это первое , что пришло на ум
Ivan
Ну писать код на все пять, раз дизайн такой
JV
Victor
Бить дизайнера
Victor
Можно ногами
JV
это онбоардинг, надо
Илья
обьясни пож
Утебя есть зависимость от размера какого-нибудь супервью, так? Если это 5.3", то будет шире и выше относительно 3.5", если 4" то выше. От этого и пляши: есть констрейнт relative height/width, самому элементу устанавливаешь aspect ratio и вот
JV
Утебя есть зависимость от размера какого-нибудь супервью, так? Если это 5.3", то будет шире и выше относительно 3.5", если 4" то выше. От этого и пляши: есть констрейнт relative height/width, самому элементу устанавливаешь aspect ratio и вот
пробывал. Для позиционирования нужно мин 4 констреинта, так? Но зависимость модно установить только на 2. То есть если поставить аспект ратио на ширину, то на высоту уже не поставить
Илья
Ты можешь и на ширину и на высоту, почему
Илья
Илья
Я не у компа))
D.D.M.
Здравствуйте. Подскажите как в tableView сделать автоматическое увеличения ячеек(когда subtitle или title в несколько строк) В старом проекте сделал, все работает. В новом проекте делаю тоже самое - ячейки не изменяются
D.D.M.
значит что-то не так делаешь
А как правильно? Я переопределил и estimatedHeight и tableview элементы. Не работает. В некоторых туториалах советуют поставить отступы, но в xcode констраинты лейблов title и subtitle внутри ячейки неактивны
Илья
Констрейнты тебя не особо должны волновать. Можешь поюзать кастомные ячейки, про стандартные не могу ничего сказать. Что-что ты tableView переопределил?
D.D.M.
Я переопределил В viewDidLoad tableView.estimatedRowHeight = 50 tableView.rowHeight = UITableViewAutomaticDimension И методы internal func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { return UITableViewAutomaticDimension } internal func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return UITableViewAutomaticDimension }
D.D.M.
И это дало 0 результата
Filipp
а констрейнты правильно привязаны на лэйблы? надо чтобы по ним можно было вычислить высоту, то есть лэйбл должен быть привязан и к верхнему вью и к нижнему