滚动与网格
滚动视图
draw_scrollable_list :: proc(items: []string) {
rect := UI.get_safe_screen_rect()->inset(50);
// 首先为滚动条保留空间
scroll_bar_area := rect->cut_right(8)->inset(2);
settings: Scroll_View_Settings;
settings.vertical = true;
settings.horizontal = false;
settings.clip_padding = {10, 10, 10, 10};
sv := UI.push_scroll_view(rect, "my_scroll_view", settings); {
defer UI.pop_scroll_view();
content := sv.content_rect;
ts := UI.default_text_settings();
ts.size = 24;
for i: 0..items.count-1 {
item_rect := content->cut_top(40);
UI.text(item_rect, ts, items[i]);
}
}
scroll_bar_rect := sv->compute_scroll_bar_rect(scroll_bar_area);
UI.quad(scroll_bar_area, core_globals.white_sprite, {0.025, 0.025, 0.025, 1});
UI.quad(scroll_bar_rect, core_globals.white_sprite, {0.1, 0.1, 0.1, 1});
}网格布局
在滚动视图内部使用时会自动扩展滚动视图。此模式非常适合大型库存:
UI.push_id()
最后更新于