我正在创建一个学习红宝石和鞋子的乐趣应用程序,但似乎我无法完成我正在尝试做的事情......
我有一个包含一些文本的堆栈,在某些情况下,我想更改该堆栈的背景,但由于某种原因,堆栈中的所有文本都被删除。 我怎么能避免这种情况?我只是想改变背景颜色。
显示问题的示例代码:
Shoes.app do
@first_stack = stack do
background orange
@title = title "my title"
@subtitle = subtitle "my subtitle"
end
button ("change background") {
@first_stack.background gold
}
end
答案 0 :(得分:3)
似乎背景会创建一个填充,这意味着您的文本仍然只是嵌套在填充下。这是一个解决方法
Shoes.app do
def change_color(back)
@first_stack.clear
@first_stack.background back
@first_stack.title @title
@first_stack.subtitle @subtitle
end
@first_stack = stack do
background orange
@title = title "my title"
@subtitle = subtitle "my subtitle"
end
button ("change background") do
change_color(gold)
end
end
这只是清除第一个堆栈并使用新颜色重新创建它。仍然在寻找一种更有说服力的方法。
编辑
找到解决方案:
Shoes.app do
@first_stack = stack do
@fs_background = background orange
@title = title "my title"
@subtitle = subtitle "my subtitle"
end
button ("change background") do
@fs_background.remove
@first_stack.before(@title) {@fs_background = background gold}
end
end
这将按照您想要的方式工作,因为它将背景图层放在原始背景图层的顶部但在@title
之前。
答案 1 :(得分:0)
假设你将背景作为第一个元素:
Shoes.app do
@f = stack do
background blue
title "my title"
subtitle "my subtitle"
end
button ("change background") do
@f.children.first.remove
@f.before(@f.children.first) {
background gold
}
end
end
答案 2 :(得分:0)
Shoes.app do
@first_stack = stack do
background orange
@title = title "my title"
@subtitle = subtitle "my subtitle"
end
button ("change background") {
@first_stack.contents[0].fill = gold
@first_stack.refresh_slot
}
end