GeometryReader не генерирует правильную высоту экрана? - PullRequest
0 голосов
/ 26 октября 2019
public var body: some View  
{  
  ZStack{  

     GeometryReader { geometry in  
          RoundedRectangle(cornerRadius: 25, style: .continuous)  
            .frame(width: geometry.size.width*1.00, height: geometry.size.height*1.00)  
            .zIndex(0)  
      }  
  }  
} 

Я использую GeometryReader, чтобы нарисовать прямоугольник со скругленными углами, чтобы заполнить весь экран часов, это выглядит хорошо на 38-миллиметровом имитаторе часов, но когда я увеличил размер часов до 40, 42, 44 мм, я заметил, чтовысота не заполняет весь экран. Я должен откорректировать свой множитель, например, до 1,1, чтобы заполнить больше экрана.

Может кто-нибудь сказать мне, если я неправильно использую GeometryReader?

1 Ответ

0 голосов
/ 26 октября 2019

Если вам действительно не нужна полная функциональность считывателя геометрии, чтобы фактически измерить размер объекта на экране, то я думаю, что вы могли бы достичь желаемого эффекта, установив для maxWidth и maxHeight для кадра значение .infinity и игнорируя безопасную область внизу.

var body: some View {
    ZStack {
        RoundedRectangle(cornerRadius: 25, style: .continuous)
            .frame(maxWidth: .infinity, maxHeight: .infinity)
            .edgesIgnoringSafeArea(.bottom)
        }
}

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

...