在给定动态数量的项目的情况下,我必须平均分割屏幕。
所以我需要根据屏幕尺寸/比例找到列数和行数。
每个项目大小并不重要,因为我将根据每个col和row的项目以%计算它们。
如果我有5个项目,那么(取决于屏幕比例)我可能在第1行有3列,在第2行有2列。没关系。
答案 0 :(得分:2)
首先,您必须通过“平均划分屏幕”来决定您的意思。 这可能意味着每个项目都有一个首选的x-y比率。
您可以使用以下算法,该算法有利于在减少空白空间数量时接近所需的x-y比率。
// Set this to the desired x-to-y ratio.
const preferred_ratio = 1.2;
function calc_cols_rows(In: screen, In: num_items, Out: num_rows, Out: num_cols) {
desired_aspect = (screen.width / screen.height) / preferred_ratio;
// Calculate the number of rows that is closest to the desired aspect:
num_rows = round(sqrt(num_items / desired_aspect));
// Calculate the required number of columns:
num_cols = ceil(num_items / num_rows);
}