Function rui::zstack

source ·
pub fn zstack<VT: ViewTuple + 'static>(children: VT) -> impl View
Expand description

Stack of up to 128 overlaid Views in a tuple. Each item can be a different view type.

Examples found in repository?
examples/zstack.rs (lines 4-7)
3
4
5
6
7
8
fn main() {
    rui(zstack((
        "This is a test.",
        circle().color(RED_HIGHLIGHT).padding(Auto),
    )));
}
More examples
Hide additional examples
examples/calc.rs (lines 7-13)
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
fn digit_button(title: &str, state: StateHandle<String>) -> impl View {
    let t = String::from(title);
    zstack((
        rectangle()
            .corner_radius(10.0)
            .color(RED_HIGHLIGHT)
            .tap(move |cx| cx[state].push_str(&t)),
        text(title).color(BLACK).offset([10.0, 10.0]),
    ))
    .padding(Auto)
}

fn calc_button(title: &str, callback: impl Fn(&mut Context) + 'static) -> impl View {
    zstack((
        rectangle()
            .corner_radius(10.0)
            .color(GREEN_HIGHLIGHT)
            .tap(callback),
        text(title).color(BLACK).offset([10.0, 10.0]),
    ))
    .padding(Auto)
}
examples/key_mods.rs (lines 5-11)
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
fn main() {
    rui(hstack((
        zstack((
            circle()
                .color(RED_HIGHLIGHT.alpha(0.8))
                .tap(|cx| println!("tapped circle, key modifiers state: {:?}", cx.key_mods))
                .padding(Auto),
            "Tap (inside circle)",
        )),
        zstack((
            rectangle()
                .corner_radius(5.0)
                .color(AZURE_HIGHLIGHT_BACKGROUND)
                .drag(|cx, delta, _state, _mouse_button| {
                    println!(
                        "dragging: {:?}, key modifiers state: {:?}",
                        delta, cx.key_mods
                    )
                })
                .padding(Auto),
            "Drag (inside rectangle)".padding(Auto),
        )),
        "Handle key pressed"
            .key(|cx, key| println!("key: {:?}, key modifiers state: {:?}", key, cx.key_mods))
            .padding(Auto),
    )));
}