1

我正在尝试在 RubyMotion 项目中混合运动布局和茶杯。我创建了一个示例视图助手来说明我的问题:

module Teacup::Layout

  def example(name, options = {})

    subview UIView, name do
      subview UILabel, "#{name}_label".to_sym, text: options[:label]

      auto do
        horizontal "|-[#{name}_label]-|"
      end
    end
  end
end

当我example(:example), text: "Test"layout块内调用时,我的代码会引发以下异常:

(main)> 2013-10-25 13:40:45.989 rui[55552:80b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse constraint format:
example_label is not a key in the views dictionary.
H:|-[example_label]-|

如果我省略运动布局代码并检查视图,则example_label视图是视图的子example视图。这里发生了什么?

4

1 回答 1

0

在 Teacup 的文档中,它说:

# if you need to apply these to a different view, or if you want to assign
# different names to use in the ASCII strings
# auto(layout_view=self.view, layout_subviews={}, &layout_block)

由于创建所有这些视图的“动态”性质,并且布局(运动布局)位于子视图而不是布局(茶杯)中,尽管子视图和布局相似,但它可能会变得混乱。

无论如何,尝试使用文档中的建议非常具体地确定哪些视图将进入auto块,然后就不会对布局中的内容产生歧义。

于 2013-12-12T01:45:47.843 回答