mirror of
https://github.com/zhigang1992/ProMotion.git
synced 2026-05-24 09:13:24 +08:00
Merge pull request #285 from clearsightstudio/set-frames-x-y
Set frames x y
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
module ProMotion
|
||||
module Styling
|
||||
include Conversions
|
||||
|
||||
|
||||
def set_attributes(element, args = {})
|
||||
args.each { |k, v| set_attribute(element, k, v) }
|
||||
element
|
||||
@@ -34,6 +34,8 @@ module ProMotion
|
||||
args[:resize].each { |r| attributes[:autoresizingMask] |= map_resize_symbol(r) }
|
||||
end
|
||||
|
||||
args[:left] = args.delete(:x) if args[:x]
|
||||
args[:top] = args.delete(:y) if args[:y]
|
||||
if [:left, :top, :width, :height].select{ |a| args[a] && args[a] != :auto }.length == 4
|
||||
attributes[:frame] = CGRectMake(args[:left], args[:top], args[:width], args[:height])
|
||||
end
|
||||
@@ -64,7 +66,7 @@ module ProMotion
|
||||
end
|
||||
nil
|
||||
end
|
||||
|
||||
|
||||
def add(element, attrs = {})
|
||||
add_to view_or_self, element, attrs
|
||||
end
|
||||
@@ -86,11 +88,11 @@ module ProMotion
|
||||
end
|
||||
element
|
||||
end
|
||||
|
||||
|
||||
def view_or_self
|
||||
self.respond_to?(:view) ? self.view : self
|
||||
end
|
||||
|
||||
|
||||
# These three color methods are stolen from BubbleWrap.
|
||||
def rgb_color(r,g,b)
|
||||
rgba_color(r,g,b,1)
|
||||
@@ -103,7 +105,7 @@ module ProMotion
|
||||
|
||||
def hex_color(str)
|
||||
hex_color = str.gsub("#", "")
|
||||
case hex_color.size
|
||||
case hex_color.size
|
||||
when 3
|
||||
colors = hex_color.scan(%r{[0-9A-Fa-f]}).map{ |el| (el * 2).to_i(16) }
|
||||
when 6
|
||||
@@ -111,16 +113,16 @@ module ProMotion
|
||||
else
|
||||
raise ArgumentError
|
||||
end
|
||||
|
||||
|
||||
if colors.size == 3
|
||||
rgb_color(colors[0], colors[1], colors[2])
|
||||
else
|
||||
raise ArgumentError
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
protected
|
||||
|
||||
|
||||
def map_resize_symbol(symbol)
|
||||
@_resize_symbols ||= {
|
||||
left: UIViewAutoresizingFlexibleLeftMargin,
|
||||
@@ -128,10 +130,10 @@ module ProMotion
|
||||
top: UIViewAutoresizingFlexibleTopMargin,
|
||||
bottom: UIViewAutoresizingFlexibleBottomMargin,
|
||||
width: UIViewAutoresizingFlexibleWidth,
|
||||
height: UIViewAutoresizingFlexibleHeight
|
||||
height: UIViewAutoresizingFlexibleHeight
|
||||
}
|
||||
@_resize_symbols[symbol] || symbol
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -79,7 +79,7 @@ describe "view helpers" do
|
||||
before do
|
||||
@dummy = UIView.alloc.initWithFrame CGRectZero
|
||||
@dummy.extend ProMotion::Styling
|
||||
|
||||
|
||||
@parent = UIView.alloc.initWithFrame(CGRectMake(0, 0, 320, 480))
|
||||
@child = UIView.alloc.initWithFrame(CGRectZero)
|
||||
end
|
||||
@@ -89,11 +89,11 @@ describe "view helpers" do
|
||||
resize: [:left, :right, :top, :bottom, :width, :height]
|
||||
}
|
||||
|
||||
mask = UIViewAutoresizingFlexibleLeftMargin |
|
||||
UIViewAutoresizingFlexibleRightMargin |
|
||||
UIViewAutoresizingFlexibleTopMargin |
|
||||
UIViewAutoresizingFlexibleBottomMargin |
|
||||
UIViewAutoresizingFlexibleWidth |
|
||||
mask = UIViewAutoresizingFlexibleLeftMargin |
|
||||
UIViewAutoresizingFlexibleRightMargin |
|
||||
UIViewAutoresizingFlexibleTopMargin |
|
||||
UIViewAutoresizingFlexibleBottomMargin |
|
||||
UIViewAutoresizingFlexibleWidth |
|
||||
UIViewAutoresizingFlexibleHeight
|
||||
|
||||
@child.autoresizingMask.should == mask
|
||||
@@ -104,8 +104,8 @@ describe "view helpers" do
|
||||
resize: [:left, :right, :top]
|
||||
}
|
||||
|
||||
mask = UIViewAutoresizingFlexibleLeftMargin |
|
||||
UIViewAutoresizingFlexibleRightMargin |
|
||||
mask = UIViewAutoresizingFlexibleLeftMargin |
|
||||
UIViewAutoresizingFlexibleRightMargin |
|
||||
UIViewAutoresizingFlexibleTopMargin
|
||||
|
||||
@child.autoresizingMask.should == mask
|
||||
@@ -116,8 +116,8 @@ describe "view helpers" do
|
||||
resize: [:bottom, :width, :height]
|
||||
}
|
||||
|
||||
mask = UIViewAutoresizingFlexibleBottomMargin |
|
||||
UIViewAutoresizingFlexibleWidth |
|
||||
mask = UIViewAutoresizingFlexibleBottomMargin |
|
||||
UIViewAutoresizingFlexibleWidth |
|
||||
UIViewAutoresizingFlexibleHeight
|
||||
|
||||
@child.autoresizingMask.should == mask
|
||||
@@ -142,6 +142,17 @@ describe "view helpers" do
|
||||
@child.frame.should == CGRectMake(10, 20, 100, 50)
|
||||
end
|
||||
|
||||
it "Should create a frame with x & y" do
|
||||
@dummy.set_easy_attributes @parent, @child, {
|
||||
x: 10,
|
||||
y: 20,
|
||||
width: 100,
|
||||
height: 50
|
||||
}
|
||||
|
||||
@child.frame.should == CGRectMake(10, 20, 100, 50)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user