Как обнаружить закругленные углы экрана в iOS

На (https://developer.apple.com/ios/human-interface-guidelines/overview/iphone-x) Apple сообщает нам, что «кнопка полной ширины, появляющаяся в нижней части экрана, выглядит лучше всего, когда она имеет закругленные углы и выровнена по нижней части безопасной области». ..."

Поэтому я хочу закруглить углы моей кнопки, если углы экрана круглые, но иметь острые углы, когда углы экрана острые.

Я бы просто проверил, работает ли приложение на iPhone X, но я ожидаю, что будущие устройства также будут иметь закругленные углы, и я не хочу пересматривать этот код каждый раз, когда выходит новое устройство.

Я уже проверил window.layer.cornerRaidus в своем делегате приложения...


person Daniel T.    schedule 28.02.2018    source источник
comment
учитывая, как мы должны проверить iphone-x, я не думаю, что будет чистый способ узнать это   -  person Milan Nosáľ    schedule 28.02.2018
comment
@MilanNosáľ прав. Вы должны проверить модель устройства. Для этого вы можете использовать этот набор   -  person Ahmet Sina    schedule 28.02.2018
comment
Я бы поставил встречный вопрос: зачем обнаруживать закругленные углы экрана в iOS? Я имею в виду, что вы понимаете причину, но все же зачем... Apple говорит не делать этого, и вы не можете создать перспективный алгоритм для обнаружения этого.   -  person holex    schedule 28.02.2018
comment
Полноразмерная кнопка, появляющаяся в нижней части экрана, выглядит лучше всего, когда она имеет закругленные углы и выровнена по нижней части безопасной области... работает и на любых других устройствах. Такая настройка противоречит намерениям и рекомендациям Apple.   -  person MichaelV    schedule 28.02.2018
comment
PS: Возможно, вы перепутали углы безопасной области со скругленными углами экрана устройства.   -  person MichaelV    schedule 28.02.2018


Ответы (2)


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

Что бы вы ни делали, имейте в виду, что Apple может изменить или изменит свои рекомендации по пользовательскому интерфейсу, API и внешний вид пользовательского интерфейса, поэтому не планируйте, чтобы ваш перспективный дизайн был ориентирован на будущее.

person hotpaw2    schedule 03.03.2018

Учитывая, как мы должны проверить, находимся ли мы на iphone-x (например, см. этот ответ SO), я не думаю, что есть и скоро будет чистый способ выяснить это.

Более того, на мой взгляд, наличие безопасной зоны свидетельствует о нежелательности обнаружения этого. Безопасная зона — это прямоугольник, в который можно рисовать, а за его пределы рисовать нельзя, или я бы даже сказал, что вам должно быть наплевать, что там (или чего там нет).

Выдержка из Позиционирование контента относительно безопасной зоны:

Безопасные области помогают размещать представления в видимой части всего интерфейса.

Это то, что гарантированно можно использовать для вашего макета, и вам не следует особо заботиться о его внешнем виде.

Относительно приведенных вами рекомендаций:

Вставить полноразмерные кнопки.

Кнопка, которая доходит до краев экрана, может не выглядеть как кнопка. Соблюдайте стандартные поля UIKit по бокам полноразмерных кнопок. Полноразмерная кнопка, появляющаяся в нижней части экрана, выглядит лучше всего, когда она имеет закругленные углы и выровнена по нижней части безопасной области, что также гарантирует, что она не конфликтует с индикатором «Домой».

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

person Milan Nosáľ    schedule 28.02.2018
comment
И еще, для дока на приборной панели в iPhone X углы закруглены и не доходят до края экрана, а в iPhone 8 углы острые и доходят до края экрана. экран. - person Daniel T.; 28.02.2018
comment
@ДэниелТ. какова твоя точка зрения? Я согласен с вами и рекомендациями, что для iPhoneX он должен быть со скругленными углами. Я просто говорю, что соединение этого решения с экраном со скругленными углами может быть преждевременным обобщением. Они ДЕЙСТВИТЕЛЬНО говорят вам закруглить углы на iPhoneX, а не на других устройствах, но ОНИ НЕ связывают это с закругленными углами экрана. Вы предполагаете, что его решили порекомендовать из-за закругленных углов экрана. И я признал, что это справедливое предположение, но на данный момент это всего лишь предположение. - person Milan Nosáľ; 28.02.2018
comment
@ДэниелТ. и, в конце концов, вы можете быть правы, но поскольку они явно не используют это рассуждение, я не думаю, что они предоставят хороший API, как вам хотелось бы. Учтите, что они рекомендуют определенный макет для iPhoneX, и тем не менее, нет хорошего и чистого стандартного способа определить, что вы находитесь на iPhoneX. - person Milan Nosáľ; 28.02.2018
comment
Мне нужно знать, закруглены ли углы экрана, и фактический радиус для анимации представления и отклонения вида, который должен соответствовать углам экрана при его расширении и сжатии. - person Mike C.; 22.10.2019