0

在这里,我创建了两个视图(栏和图标),我想打一个电话@window.addSubview来添加它们。

class AppDelegate
  def application(application, didFinishLaunchingWithOptions:launchOptions)
    @window = UIWindow.alloc.initWithFrame UIScreen.mainScreen.bounds
    @window.makeKeyAndVisible

    bar = UIView.alloc.initWithFrame [[0, 0], [320, 100]]

    icon= UIImageView.alloc.initWithFrame([[100,0], [100,100]])

    @window.addSubview bar   # I have two calls to addSubview
    @window.addSubview icon

  true
  end
end

我想要这样的东西:

@window.addSubview bar, icon

或者

@window.addSubview [bar,icon]

我意识到差异是名义上的,但似乎应该有一种方法可以同时调用addSubview多个视图。

4

2 回答 2

1

我会说你只是乞求通过这样做在以后的日期绊倒自己和其他人,但如果你必须重新打开UIView并自己定义方法

class UIView
  def addSubviews *views
    views.flatten.each { |view| addSubview view }
  end
end

这应该允许

@window.addSubviews [view_a, view_b]

# OR

@window.addSubviews view_a, view_b

在这里尝试是一个完整的例子

class AppDelegate
  def application(application, didFinishLaunchingWithOptions:launchOptions)

    @window = UIWindow.alloc.initWithFrame UIScreen.mainScreen.bounds
    @window.makeKeyAndVisible

    view_a = UIView.alloc.initWithFrame [[100, 100], [100, 100]]
    view_a.backgroundColor = UIColor.greenColor

    view_b = UIView.alloc.initWithFrame [[200, 200], [100, 100]]
    view_b.backgroundColor = UIColor.redColor

    @window.addSubviews [view_a, view_b]

    true
  end
end

class UIView
  def addSubviews *views
    views.flatten.each { |view| addSubview view }
  end
end
于 2012-07-19T08:51:16.983 回答
0

据我所知,没有一种方法可以做你想做的事。正常的红宝石方式是这样的:

[bar,icon].each do |view|
  @window.addSubview view
end  

甚至更短:

[bar, icon].each{|v| @window.addSubView(v) }
于 2012-07-15T21:25:01.367 回答