Nano Hash - криптовалюты, майнинг, программирование

Затемнение всех представлений на фоне кнопки

У меня есть кнопка меню (+) в правом верхнем углу представления, когда затем нажимается кнопка, несколько других кнопок выпадают для выбора пользователем.

Я хотел бы эффективно затемнить все представления под всеми этими кнопками.

В настоящее время я делаю это, имея прозрачный вид поверх всего и изменяя цвет фона, а также его прозрачность после нажатия кнопки.

if button.isHidden {
    self.dimView!.backgroundColor = UIColor.black
    self.dimView!.alpha = 0.7
} else {
    self.dimView!.alpha = 0
}

Является ли этот метод достижения этого эффективным? Эффективен в том смысле, что не будет мешать касаниям и не будет тормозить телефон?

18.12.2017

  • если этот вид находится в фоновом режиме, то он не будет мешать нажатиям раскрывающихся кнопок. 18.12.2017
  • @ShamasS представление находится поверх табличных представлений и других меток в фоновом режиме, похоже, оно не мешает прикосновениям, даже если оно находится поверх этих представлений, но я не уверен, приведет ли это к отставанию табличного представления. 18.12.2017

Ответы:


1

Ваше затемняемое представление должно отключать нажатия на представления, которые оно покрывает, когда его альфа выше 0,5.

Если вы установите альфа на 0, вам, вероятно, следует установить view.hidden=true. Таким образом, система рендеринга не пытается скомпоновать его с другими представлениями на экране. (Установите hidden=false перед установкой альфы на 0,7 и hidden=true в дополнение к/вместо установки альфы на 0. Если вы не анимируете изменение альфы со скрытым = истинным, значение альфы не имеет значения.)

18.12.2017
  • Спасибо, это то, что я искал, но просто для ясности, это лучший способ сделать это? 18.12.2017
  • Я не уверен в наилучшем способе, но это то, что я сделал, и оно работает хорошо. 18.12.2017

  • 2

    Ну, прозрачный вид должен быть на фоне всех подпредставлений вашего ViewController, чтобы достичь желаемого результата.

    Что касается эффективного и оптимизированного способа, то лучше установить непрозрачное свойство представления, вот описание: -

    Свойство «Непрозрачность» дает подсказку системе рисования о том, как она должна обрабатывать вид. Если установлено значение true, система рисования рассматривает вид как полностью непрозрачный, что позволяет системе рисования оптимизировать некоторые операции рисования и повысить производительность. Если установлено значение false, система рисования обычно комбинирует вид с другим содержимым. Значение по умолчанию этого свойства — true.

    Ожидается, что непрозрачное представление заполнит свои границы полностью непрозрачным содержимым, то есть содержимое должно иметь альфа-значение 1,0. Если представление непрозрачно и либо не заполняет свои границы, либо содержит полностью или частично прозрачное содержимое, результаты непредсказуемы. Вы должны всегда устанавливать значение этого свойства в false, если представление полностью или частично прозрачно.

    Код должен быть таким: -

    view.backgroundColor = UIColor.black.withAlphaComponent(0.75)
    view.isOpaque = false
    
    18.12.2017
  • Извините, я думаю, что мой вопрос не очень ясен, я добавил обычное представление поверх всех моих ярлыков и кнопок, но под моей кнопкой (+). Когда я нажимаю эту кнопку, я превращаю вид, который я разместил поверх этих других видов, в черный и делаю его прозрачным. 18.12.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..