Pular para o conteúdo principal

Obter o fator de escala da tela (screen.scale_factor)

Declaração

local factor = screen.scale_factor()

Valor retornado

  • factor
    Número; representa o fator entre os pixels da tela do dispositivo atual e os pontos lógicos (pt).

Observações

O valor retornado é usado para converter entre a resolução real em pixels da tela e o sistema de coordenadas lógicas.
Valores comuns: 2.0 (a maioria dos iPhones e iPads Retina) e 3.0 (séries Plus/Max e iPhones recentes com tela inteira). Os iPhones modernos praticamente não têm o fator 1.0 não Retina.
Em conjunto com screen.size(), permite converter dimensões em pontos lógicos: width_pt = width_px / factor. Encontrar imagens e obter cores continuam baseados em dimensões de pixels; a conversão só é necessária ao lidar com coordenadas de pontos baseadas na interface.

Exemplo

-- converte a resolução em pixels em pontos lógicos
local w_px, h_px = screen.size()
local scale = screen.scale_factor()
local w_pt, h_pt = w_px / scale, h_px / scale

sys.log(string.format("像素分辨率: %dx%d, 倍率: %.1fx, 逻辑点: %.0fx%.0f", w_px, h_px, scale, w_pt, h_pt))

-- ajusta as coordenadas da interface conforme o fator de escala
local x_point, y_point = 100, 200 -- coordenadas de pontos provenientes do Apple HIG ou da descrição de uma interface de terceiros
local x_px, y_px = x_point * scale, y_point * scale

touch.tap(x_px, y_px)

Observação: o código acima usa as funções sys.log e touch.tap, que não pertencem a este capítulo.