Ну вот о чем я и говорю...
В одном из чатов чувак пишет:
Обратили внимание на "SwiftUI"?
Скидываю ему ссылку на видос.
Если не знаете, почему так происходит, крайне рекомендую посмотреть.
На что он отвечает:
___
Информация для размышления:
Такие вопросы чаще всего задают чуваки, которые начинают со SwiftUI.
База - для лохов старперов...
___
Информация для размышления №2:
Если хочешь получить ответ, то задай НОРМАЛЬНЫЙ вопрос!
Если тебе надо ОКРУГЛИТЬ, то так и пиши.
Если тебе надо, чтобы складывалось правильно - напиши свой стандарт.
___
Информация для размышления №3:
Вайбкодинг...
В одном из чатов чувак пишет:
Всем привет. Подскажите почему 51.373 + 0.001 получается 51.3739999999…. А не 51.374 И главное - как исправить. SwiftUI
Обратили внимание на "SwiftUI"?
Скидываю ему ссылку на видос.
Если не знаете, почему так происходит, крайне рекомендую посмотреть.
На что он отвечает:
да мне не надо) мне надо быстро эту проблему решить. если нет быстрого решения то ладно.
___
Информация для размышления:
Такие вопросы чаще всего задают чуваки, которые начинают со SwiftUI.
База - для лохов старперов...
___
Информация для размышления №2:
Если хочешь получить ответ, то задай НОРМАЛЬНЫЙ вопрос!
Если тебе надо ОКРУГЛИТЬ, то так и пиши.
Если тебе надо, чтобы складывалось правильно - напиши свой стандарт.
___
Информация для размышления №3:
Вайбкодинг...
Ну вот на-ху-я?
Мы даже скопировать не можем...
Надо просто взять и сделать аналог ноушена. Взять и сделать.
В один день взяли и поменяли цвет ссылок. Т.к. я использую юноте только как содержание, у меня все состоит из ссылок. Теперь все выглядит как бледное унылое гавно...
И что самое интересное: НЕЛЬЗЯ ИЗМЕНИТЬ ЦВЕТ ССЫЛКИ.
Точнее можно изначально создать текст, задать ему параметры, а потом добавить линк. Но после уже все...
Выбесили...
Мы даже скопировать не можем...
Надо просто взять и сделать аналог ноушена. Взять и сделать.
В один день взяли и поменяли цвет ссылок. Т.к. я использую юноте только как содержание, у меня все состоит из ссылок. Теперь все выглядит как бледное унылое гавно...
И что самое интересное: НЕЛЬЗЯ ИЗМЕНИТЬ ЦВЕТ ССЫЛКИ.
Точнее можно изначально создать текст, задать ему параметры, а потом добавить линк. Но после уже все...
Выбесили...
Что выведется в консоль при нажатии на оранжевую вью?
Anonymous Quiz
14%
darkGray touchesBegan
50%
orange touchesBegan
14%
"darkGray touchesBegan" потом "orange touchesBegan"
7%
"orange touchesBegan" потом "darkGray touchesBegan"
14%
Ничего, пустая консоль
iOS Build & Run
Сегодня записывал видео о HitTest и ResponderChain. Давайте немного вспомним...
Срабатывает touchesBegan у оранжевой вью, потому что:
- Палец коснулся экрана. Событие отправляется в UIApplication.
- UIApplication передает событие активному UIWindow.
- UIWindow запускает hitTest. Находит самую глубокую (в иерархии) вью под точкой.
- UIWindow передает найденной вью событие. Вызывает у нее touchesBegan.
У серой вью touchesBegan не отрабатывает, т.к. в данном случая она является просто контейнером для оранжевой вью.
- Палец коснулся экрана. Событие отправляется в UIApplication.
- UIApplication передает событие активному UIWindow.
- UIWindow запускает hitTest. Находит самую глубокую (в иерархии) вью под точкой.
- UIWindow передает найденной вью событие. Вызывает у нее touchesBegan.
У серой вью touchesBegan не отрабатывает, т.к. в данном случая она является просто контейнером для оранжевой вью.
frame, bounds
История о том, как по одному вопросу понять кандидат тупо заучил или может рассуждать...
___
Этот вопрос задолбал всех, но почему его до сих пор спрашивают?
Классическая версия звучит так:
Что изменится при повороте вью?
Для скрина:
Что изменится, если раскомментировать строку 26
Предлагаю добавить побольше вариантов, чтобы было хоть чуть-чуть интересно.
___
П.С. Вечером скину вторую часть вопроса
История о том, как по одному вопросу понять кандидат тупо заучил или может рассуждать...
___
Этот вопрос задолбал всех, но почему его до сих пор спрашивают?
Классическая версия звучит так:
Что изменится при повороте вью?
Для скрина:
Что изменится, если раскомментировать строку 26
Предлагаю добавить побольше вариантов, чтобы было хоть чуть-чуть интересно.
___
П.С. Вечером скину вторую часть вопроса
Что изменится при повороте вью?
Anonymous Poll
64%
testView.frame.origin
18%
testView.bounds.origin
27%
testView.frame.height
18%
testView.bounds.height
27%
testView.frame.width
18%
testView.bounds.width
iOS Build & Run
frame, bounds История о том, как по одному вопросу понять кандидат тупо заучил или может рассуждать... ___ Этот вопрос задолбал всех, но почему его до сих пор спрашивают? Классическая версия звучит так: Что изменится при повороте вью? Для скрина: Что изменится…
Frame, bounds - часть 2
В первом посте изображено исходное положение вьюх.
Какой код написан в 26 строке?
В первом посте изображено исходное положение вьюх.
Какой код написан в 26 строке?
Какой код написан в 26 строке?
Anonymous Quiz
10%
testView.frame.origin.x += 100
40%
testView.frame.origin.x -= 100
30%
testView.bounds.origin.x += 100
20%
testView.bounds.origin.x -= 100
Frame и Bounds - давайте разбираться
На собеседовании:
Вас спрашивают дежурный вопрос:
Что такое frame / bounds? Что изменяется при повороте вью?
frame - положение и размер в координатах родителя.
bounds - размер и внутренняя система координат.
При повороте вью изменится frame. Но bounds останется без изменений.
Мой любимый тупой пример из жизни:
Представьте вы лежите на кровати вдоль. Решили лечь поперек. Относительно кровати вы изменили свое положение, но голова у вас по-прежнему выше плеч.
По поводу теста
Изменится:
1. origin - потому что anchorPoint по умолчанию стоит в (0.5, 0.5)
2. frame.height и frame.width - была высота 100, длина 200, после поворота на 90° высота будет 200, длина 100.
Этим вопросом замучали всех. Он в числе первых «топ-100 вопросов».
___
Следующий вопрос:
Что произойдет при изменении bounds?
При изменении bounds будет двигаться контент (subviews), но здесь все не совсем очевидно.
При увеличении bounds (bounds.origin.x += 100) контент будет смещен влево.
Вся эта магия связана с математикой UIKit.
UIKit по умолчанию считает верхний левый угол bounds началом координат для отрисовки сабвью. Меняя bounds.size мы расширяем или сжимаем эту систему координат, но не двигаем точку начала.
Мой любимый тупой пример из жизни №2:
Представь, ты играешь в компьютерную игру. Красная вью это твой монитор. Черная - ящик. В игре ты повернул голову направо (bounds.origin.x += 100). Монитор от этого не сместился. Сместился контент. А куда он сместился? Правильно - влево!
___
Ты уже немного занервничал, запутался, и задается финальный, максимально очевидный вопрос:
Где может применяться изменение bounds?
Ответ:СкроллВью
Удивление №раз
Что такое скроллВью? Это анимированное изменение bounds.
Удивление №два
contentOffset - просто удобная обертка над bounds.origin
scrollView.contentOffset.x == scrollView.bounds.origin.x
___
П.С. А еще можно спросить как работает хитТест в скроллВью.
На таком вопросе не надо теряться, надо просто рассуждать. Все на поверхности 🤓
На собеседовании:
Вас спрашивают дежурный вопрос:
Что такое frame / bounds? Что изменяется при повороте вью?
frame - положение и размер в координатах родителя.
bounds - размер и внутренняя система координат.
При повороте вью изменится frame. Но bounds останется без изменений.
Мой любимый тупой пример из жизни:
Представьте вы лежите на кровати вдоль. Решили лечь поперек. Относительно кровати вы изменили свое положение, но голова у вас по-прежнему выше плеч.
По поводу теста
Изменится:
1. origin - потому что anchorPoint по умолчанию стоит в (0.5, 0.5)
2. frame.height и frame.width - была высота 100, длина 200, после поворота на 90° высота будет 200, длина 100.
Этим вопросом замучали всех. Он в числе первых «топ-100 вопросов».
___
Следующий вопрос:
Что произойдет при изменении bounds?
При изменении bounds будет двигаться контент (subviews), но здесь все не совсем очевидно.
При увеличении bounds (bounds.origin.x += 100) контент будет смещен влево.
Вся эта магия связана с математикой UIKit.
UIKit по умолчанию считает верхний левый угол bounds началом координат для отрисовки сабвью. Меняя bounds.size мы расширяем или сжимаем эту систему координат, но не двигаем точку начала.
Мой любимый тупой пример из жизни №2:
Представь, ты играешь в компьютерную игру. Красная вью это твой монитор. Черная - ящик. В игре ты повернул голову направо (bounds.origin.x += 100). Монитор от этого не сместился. Сместился контент. А куда он сместился? Правильно - влево!
___
Ты уже немного занервничал, запутался, и задается финальный, максимально очевидный вопрос:
Где может применяться изменение bounds?
Ответ:
Удивление №раз
Удивление №два
scrollView.contentOffset.x == scrollView.bounds.origin.x
___
П.С. А еще можно спросить как работает хитТест в скроллВью.
На таком вопросе не надо теряться, надо просто рассуждать. Все на поверхности 🤓
🤓4🔥1
Это я дурак?
Ранее говорил, что на сервисе yonote (российский аналог notion) произошел редизайн и изменился цвет ссылок.
Я использую его для навигации по бусти и основной контент состоит из ссылок.
___
Сегодня зашел на страницу фундаменталки и немного...удивился (скрин №1).
Написал в поддержку, возможно, я чего-то не понимаю...
Получил ответ (скрин №2).
Насколько я понимаю, поддержка предложила мне просто переделать весь контент с нуля. Спасибо, что нах_й не послали.
Для контекста
Чтобы вручную изменить цвет ссылки надо:
- создать текст
- отформатировать
- добавить ссылку
После добавлении ссылки форматирование не возможно (изменить можно только текст и ссылку).
+ нет никакой гарантии, что эти товарищи не изменяет цвет завтра...
___
Вопрос:
Почему нельзя добавить такой простой функционал как изменение цвета ссылки? 🤬
Ранее говорил, что на сервисе yonote (российский аналог notion) произошел редизайн и изменился цвет ссылок.
Я использую его для навигации по бусти и основной контент состоит из ссылок.
___
Сегодня зашел на страницу фундаменталки и немного...удивился (скрин №1).
Написал в поддержку, возможно, я чего-то не понимаю...
Получил ответ (скрин №2).
Насколько я понимаю, поддержка предложила мне просто переделать весь контент с нуля. Спасибо, что нах_й не послали.
Для контекста
Чтобы вручную изменить цвет ссылки надо:
- создать текст
- отформатировать
- добавить ссылку
После добавлении ссылки форматирование не возможно (изменить можно только текст и ссылку).
+ нет никакой гарантии, что эти товарищи не изменяет цвет завтра...
___
Вопрос:
Почему нельзя добавить такой простой функционал как изменение цвета ссылки? 🤬
Почему кнопка не реагирует на нажатие во время анимации?
Anonymous Quiz
42%
Анимация выполняется на главном потоке
25%
UIKit блокирует нажатие во время анимации
0%
frame кнопки ушел из зоны hitTest
33%
Кнопка в процессе анимации не в иерархии окна
Нажатие кнопки во время анимации
Разберем по пунктам
1. Главный поток
UIView.animate вызывается на главном потоке, но Core Animation анимирует свойства асинхронно, на стороне render server. Это не блокирует main RunLoop напрямую.
2. Пока идет анимация, UIControl не принимает новые нажатия, потому что система считает, что кнопка "занята" анимацией. UIView.animate блокирует взаимодействие с вью на время анимации.
3. Во время анимации frame не обновляется «на лету», не прыгает по промежуточным состояниям, он всегда либо «старый», либо «новый». Т.к. Кнопка возвращается в исходное состояние - фрейм не меняется.
4. У любой UIView есть свойство window и цепочка superview -> superview -> ... -> UIWindow. Если кнопка находится в этой цепочке, то она участвует в хит-тестах и может принимать события. Если делать анимацию с последующим removeFromSuperview, и вью убрали из иерархии раньше, чем анимация закончилась - тап не сработает.
Это явно не наш случай.
Разберем по пунктам
1. Главный поток
UIView.animate вызывается на главном потоке, но Core Animation анимирует свойства асинхронно, на стороне render server. Это не блокирует main RunLoop напрямую.
2. Пока идет анимация, UIControl не принимает новые нажатия, потому что система считает, что кнопка "занята" анимацией. UIView.animate блокирует взаимодействие с вью на время анимации.
3. Во время анимации frame не обновляется «на лету», не прыгает по промежуточным состояниям, он всегда либо «старый», либо «новый». Т.к. Кнопка возвращается в исходное состояние - фрейм не меняется.
4. У любой UIView есть свойство window и цепочка superview -> superview -> ... -> UIWindow. Если кнопка находится в этой цепочке, то она участвует в хит-тестах и может принимать события. Если делать анимацию с последующим removeFromSuperview, и вью убрали из иерархии раньше, чем анимация закончилась - тап не сработает.
Это явно не наш случай.