屏幕尺寸和安全边距变化时,按钮相对整屏的位置与相对可用区域的位置可能不同。先确定可用矩形,再应用归一化锚点和像素偏移,才能说明元素为什么在不同布局下移动。

这份练习把数据、规则和中间状态一起列出。可以先自行推演,再与过程记录逐项比较;如果结果不同,先找到第一处分歧,确认时间单位、端点归属和运算顺序。案例是一套限定模型,不把其他作品的不同实现认定为错误。

规则与输入

左右上下安全边距从屏幕边缘向内扣除;锚点是可用矩形中的零至一比例,最终参考点再加像素偏移。本例只定位参考点,不处理元素自身尺寸、拉伸或自动避免重叠。

锚点(1/4,1/2),像素偏移(5,-4) [[800, 560, 25, 0, 5, 30], [840, 680, 25, 15, 10, 30], [320, 320, 10, 30, 20, 15], [1120, 760, 15, 15, 0, 5], [480, 840, 10, 30, 35, 25], [480, 800, 5, 5, 15, 25], [960, 320, 35, 20, 15, 25], [960, 960, 15, 0, 10, 40]]

逐项推演

屏幕800×560,边距左25右0上5下30;可用尺寸775×525,锚点比例(1/4,1/2)加偏移(5,-4)后参考点(895/4,527/2)。

屏幕840×680,边距左25右15上10下30;可用尺寸800×640,锚点比例(1/4,1/2)加偏移(5,-4)后参考点(230,326)。

屏幕320×320,边距左10右30上20下15;可用尺寸280×285,锚点比例(1/4,1/2)加偏移(5,-4)后参考点(85,317/2)。

屏幕1120×760,边距左15右15上0下5;可用尺寸1090×755,锚点比例(1/4,1/2)加偏移(5,-4)后参考点(585/2,747/2)。

屏幕480×840,边距左10右30上35下25;可用尺寸440×780,锚点比例(1/4,1/2)加偏移(5,-4)后参考点(125,421)。

屏幕480×800,边距左5右5上15下25;可用尺寸470×760,锚点比例(1/4,1/2)加偏移(5,-4)后参考点(255/2,391)。

屏幕960×320,边距左35右20上15下25;可用尺寸905×280,锚点比例(1/4,1/2)加偏移(5,-4)后参考点(1065/4,151)。

屏幕960×960,边距左15右0上10下40;可用尺寸945×910,锚点比例(1/4,1/2)加偏移(5,-4)后参考点(1025/4,461)。

每种布局均先扣除对应边距,再计算比例位置,最后应用固定像素偏移。

复核与使用边界

用可用矩形两条边的加权平均求参考位置,与从左上角加比例行程的写法比较。缩小可用区域不一定让参考点向同一个方向移动,要看锚点比例和两侧边距。

锚点在可用区域内,不保证整个控件都在区域内;控件尺寸和自身参考点也会影响边缘。如果界面需要完整避开边界,还要把这两项纳入约束,本例不把参考点合规误认为整体合规。

复盘时建议保留输入表和中间状态,而不仅保存最终答案。改动一个条件后重新推演,再检查起点、终点、重复值和临界输入;这样能把规则本身、计算实现和显示结果分别核对,避免把一次偶然相同当成验证完成。