├── screen.png ├── README.md ├── icons ├── CloseIconTemplate.pdf └── checkmark.pdf └── result.json /screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avito-tech/internship/HEAD/screen.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Internship 3 | 4 | ### Что нужно сделать: 5 | - Реализовать экран в соответствии с примером [макета](https://github.com/avito-tech/internship/blob/main/screen.png). Отступы, шрифты - на глаз по картине 6 | - Данные для экрана парсить из [json файла](https://github.com/avito-tech/internship/blob/main/result.json) 7 | 8 | ### Логика взаимодействия: 9 | - Элементы на сером фоне из примера и кнопка "Выбрать" кликабельные, крестик нет 10 | - При нажатии на элемент он выделяется (отмечается синей галочкой) или отменяется 11 | - Одновременно может быть отмечен только один элемент 12 | - При нажатии кнопки выбора показывается алерт с названием выбраной услуги 13 | 14 | ### Не рекомендуется: 15 | - использовать внешние зависимости 16 | - использовать SwiftUI 17 | 18 | ### Будет плюсом: 19 | + не использовать Storyboard 20 | + заюзать UICollectionView 21 | + VIPER 22 | 23 | -------------------------------------------------------------------------------- /icons/CloseIconTemplate.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 5.000000 4.804688 cm 14 | 0.000000 0.000000 0.000000 scn 15 | 13.707107 13.902419 m 16 | 13.316583 14.292944 12.683417 14.292944 12.292893 13.902419 c 17 | 7.000000 8.609526 l 18 | 1.707107 13.902419 l 19 | 1.316582 14.292944 0.683418 14.292944 0.292893 13.902419 c 20 | -0.097631 13.511895 -0.097631 12.878730 0.292893 12.488206 c 21 | 5.585787 7.195312 l 22 | 0.292893 1.902419 l 23 | -0.097631 1.511895 -0.097631 0.878730 0.292893 0.488206 c 24 | 0.683418 0.097682 1.316583 0.097682 1.707107 0.488206 c 25 | 7.000000 5.781099 l 26 | 12.292893 0.488206 l 27 | 12.683417 0.097682 13.316583 0.097682 13.707107 0.488206 c 28 | 14.097631 0.878730 14.097631 1.511895 13.707107 1.902419 c 29 | 8.414213 7.195312 l 30 | 13.707107 12.488206 l 31 | 14.097631 12.878730 14.097631 13.511895 13.707107 13.902419 c 32 | h 33 | f* 34 | n 35 | Q 36 | 37 | endstream 38 | endobj 39 | 40 | 3 0 obj 41 | 790 42 | endobj 43 | 44 | 4 0 obj 45 | << /Annots [] 46 | /Type /Page 47 | /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] 48 | /Resources 1 0 R 49 | /Contents 2 0 R 50 | /Parent 5 0 R 51 | >> 52 | endobj 53 | 54 | 5 0 obj 55 | << /Kids [ 4 0 R ] 56 | /Count 1 57 | /Type /Pages 58 | >> 59 | endobj 60 | 61 | 6 0 obj 62 | << /Type /Catalog 63 | /Pages 5 0 R 64 | >> 65 | endobj 66 | 67 | xref 68 | 0 7 69 | 0000000000 65535 f 70 | 0000000010 00000 n 71 | 0000000034 00000 n 72 | 0000000880 00000 n 73 | 0000000902 00000 n 74 | 0000001075 00000 n 75 | 0000001149 00000 n 76 | trailer 77 | << /ID [ (some) (id) ] 78 | /Root 6 0 R 79 | /Size 7 80 | >> 81 | startxref 82 | 1208 83 | %%EOF -------------------------------------------------------------------------------- /result.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": "ok", 3 | "result": { 4 | "title": "Сделайте объявление заметнее на 7 дней", 5 | "actionTitle": "Продолжить без изменений", 6 | "selectedActionTitle": "Выбрать", 7 | "list": [ 8 | { 9 | "id": "xl", 10 | "title": "XL объявление", 11 | "description": "Пользователи смогут посмотреть фотографии, описание и телефон прямо из результатов поиска.", 12 | "icon": { 13 | "52x52": "https://www.avito.ru/s/common/components/monetization/icons/apps/vas-xl-52.png" 14 | }, 15 | "price": "356 ₽", 16 | "isSelected": true 17 | }, 18 | { 19 | "id": "highlight", 20 | "title": "Выделение", 21 | "description": "Яркий цвет не даст затеряться среди других объявлений.", 22 | "icon": { 23 | "52x52": "https://www.avito.ru/s/common/components/monetization/icons/apps/vas-highlight-52.png" 24 | }, 25 | "price": "299 ₽", 26 | "isSelected": true 27 | }, 28 | { 29 | "id": "x10_1", 30 | "title": "До 10 раз больше просмотров на 1 день", 31 | "icon": { 32 | "52x52": "https://www.avito.ru/s/common/components/monetization/icons/apps/vas-x10_1-52.png" 33 | }, 34 | "price": "400 ₽", 35 | "isSelected": false 36 | }, 37 | { 38 | "id": "x5_1", 39 | "title": "До 5 раз больше просмотров на 1 день", 40 | "icon": { 41 | "52x52": "https://www.avito.ru/s/common/components/monetization/icons/apps/vas-x5_1-52.png" 42 | }, 43 | "price": "230 ₽", 44 | "isSelected": false 45 | }, 46 | { 47 | "id": "x2_1", 48 | "title": "До 2 раз больше просмотров на 1 день", 49 | "icon": { 50 | "52x52": "https://www.avito.ru/s/common/components/monetization/icons/apps/vas-x2_1-52.png" 51 | }, 52 | "price": "100 ₽", 53 | "isSelected": false 54 | } 55 | ] 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /icons/checkmark.pdf: -------------------------------------------------------------------------------- 1 | %PDF-1.7 2 | 3 | 1 0 obj 4 | << >> 5 | endobj 6 | 7 | 2 0 obj 8 | << /Length 3 0 R >> 9 | stream 10 | /DeviceRGB CS 11 | /DeviceRGB cs 12 | q 13 | 1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm 14 | 0.000000 0.666667 1.000000 scn 15 | 10.000000 0.000000 m 16 | 15.522848 0.000000 20.000000 4.477152 20.000000 10.000000 c 17 | 20.000000 15.522848 15.522848 20.000000 10.000000 20.000000 c 18 | 4.477152 20.000000 0.000000 15.522848 0.000000 10.000000 c 19 | 0.000000 4.477152 4.477152 0.000000 10.000000 0.000000 c 20 | h 21 | f 22 | n 23 | Q 24 | q 25 | 1.000000 0.000000 -0.000000 1.000000 5.612305 4.585449 cm 26 | 1.000000 1.000000 1.000000 scn 27 | 0.707107 5.650588 m 28 | 0.316583 6.041112 -0.316583 6.041112 -0.707107 5.650588 c 29 | -1.097631 5.260063 -1.097631 4.626899 -0.707107 4.236374 c 30 | 0.707107 5.650588 l 31 | h 32 | 2.845884 2.097597 m 33 | 2.138777 1.390490 l 34 | 2.326314 1.202953 2.580668 1.097597 2.845884 1.097597 c 35 | 3.111101 1.097597 3.365455 1.202953 3.552991 1.390490 c 36 | 2.845884 2.097597 l 37 | h 38 | 9.465648 7.303147 m 39 | 9.856173 7.693671 9.856173 8.326837 9.465648 8.717360 c 40 | 9.075124 9.107885 8.441958 9.107885 8.051435 8.717360 c 41 | 9.465648 7.303147 l 42 | h 43 | -0.707107 4.236374 m 44 | 2.138777 1.390490 l 45 | 3.552991 2.804703 l 46 | 0.707107 5.650588 l 47 | -0.707107 4.236374 l 48 | h 49 | 3.552991 1.390490 m 50 | 9.465648 7.303147 l 51 | 8.051435 8.717360 l 52 | 2.138777 2.804703 l 53 | 3.552991 1.390490 l 54 | h 55 | f 56 | n 57 | Q 58 | 59 | endstream 60 | endobj 61 | 62 | 3 0 obj 63 | 1176 64 | endobj 65 | 66 | 4 0 obj 67 | << /Annots [] 68 | /Type /Page 69 | /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ] 70 | /Resources 1 0 R 71 | /Contents 2 0 R 72 | /Parent 5 0 R 73 | >> 74 | endobj 75 | 76 | 5 0 obj 77 | << /Kids [ 4 0 R ] 78 | /Count 1 79 | /Type /Pages 80 | >> 81 | endobj 82 | 83 | 6 0 obj 84 | << /Type /Catalog 85 | /Pages 5 0 R 86 | >> 87 | endobj 88 | 89 | xref 90 | 0 7 91 | 0000000000 65535 f 92 | 0000000010 00000 n 93 | 0000000034 00000 n 94 | 0000001266 00000 n 95 | 0000001289 00000 n 96 | 0000001462 00000 n 97 | 0000001536 00000 n 98 | trailer 99 | << /ID [ (some) (id) ] 100 | /Root 6 0 R 101 | /Size 7 102 | >> 103 | startxref 104 | 1595 105 | %%EOF --------------------------------------------------------------------------------