mirror of
https://github.com/zhigang1992/rmq.git
synced 2026-04-29 21:25:54 +08:00
Fixed bug (with a horrible hack) when using edgesForExtendedLayout == UIRectEdgeNone
This commit is contained in:
@@ -175,8 +175,10 @@ module RubyMotionQuery
|
||||
params_h = params[:h] || params[:height]
|
||||
|
||||
# Grid
|
||||
params_g = params[:grid] || params[:g]
|
||||
# TODO
|
||||
if grid
|
||||
params_g = params[:grid] || params[:g]
|
||||
# TODO
|
||||
end
|
||||
|
||||
l = params_l || existing_rect.origin.x
|
||||
t = params_t || existing_rect.origin.y
|
||||
@@ -188,8 +190,9 @@ module RubyMotionQuery
|
||||
|
||||
fr = params[:from_right] || params[:fr]
|
||||
fb = params[:from_bottom] || params[:fb]
|
||||
|
||||
|
||||
centered = params[:centered]
|
||||
|
||||
# Previous
|
||||
if prev_view = previous_view
|
||||
if below_prev = (params[:below_prev] || params[:bp])
|
||||
@@ -206,7 +209,21 @@ module RubyMotionQuery
|
||||
end
|
||||
|
||||
if sv = view.superview
|
||||
sv_size = sv.bounds.size
|
||||
if (fr || fb || centered) # Needs size
|
||||
vc = view.rmq_data.view_controller
|
||||
|
||||
# Horrible horrible hack, TODO fix. This is here because
|
||||
# the root_view's height isn't changed until after viewDidLoad when
|
||||
# vc.edgesForExtendedLayout = UIRectEdgeNone.
|
||||
# Not sure how often people use UIRectEdgeNone as I never do,
|
||||
# perhaps an edge case that should be isolated in some wayo
|
||||
# I hate to have to check and calc this every time
|
||||
if vc && (vc.view == sv) && (vc.edgesForExtendedLayout == UIRectEdgeNone)
|
||||
sv_size = CGSizeMake(sv.size.width, rmq.device.screen_height - 64)
|
||||
else
|
||||
sv_size = sv.size
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# From right, from_bottom
|
||||
@@ -246,7 +263,7 @@ module RubyMotionQuery
|
||||
end
|
||||
|
||||
# Centered, :horizontal, :vertical, :both
|
||||
if sv && (centered = params[:centered])
|
||||
if sv && centered
|
||||
case centered
|
||||
when :horizontal
|
||||
l = (sv_size.width / 2) - (w / 2)
|
||||
@@ -261,7 +278,6 @@ module RubyMotionQuery
|
||||
[l,t,w,h]
|
||||
end
|
||||
|
||||
|
||||
end # << self
|
||||
|
||||
def initialize(params, view = nil, grid = nil)
|
||||
|
||||
24
spec/rect.rb
24
spec/rect.rb
@@ -1,3 +1,16 @@
|
||||
class RectTestController < UIViewController
|
||||
attr_reader :test_view
|
||||
|
||||
def viewDidLoad
|
||||
super
|
||||
|
||||
# Sets top:0 starts below nav
|
||||
self.edgesForExtendedLayout = UIRectEdgeNone
|
||||
|
||||
@test_view = rmq.append(UIView).layout(w: 20, h: 30, fb: 40).get
|
||||
end
|
||||
end
|
||||
|
||||
describe 'rect' do
|
||||
|
||||
describe 'updating rect of view' do
|
||||
@@ -80,14 +93,17 @@ describe 'rect' do
|
||||
|
||||
apply_frame w: 20, fr: 20
|
||||
@view.frame.origin.x.should == rmq.device.width - 40
|
||||
rmq(@view).frame.fr == 20
|
||||
end
|
||||
|
||||
it 'should apply from_bottom and fb' do
|
||||
apply_frame height: 10, from_bottom: 10
|
||||
@view.frame.origin.y.should == rmq.device.height - 20
|
||||
rmq(@view).frame.fb == 10
|
||||
|
||||
apply_frame h: 20, fb: 20
|
||||
@view.frame.origin.y.should == rmq.device.height - 40
|
||||
rmq(@view).frame.fb == 20
|
||||
end
|
||||
|
||||
it 'should apply from_bottom with a height already set' do
|
||||
@@ -103,7 +119,13 @@ describe 'rect' do
|
||||
end
|
||||
|
||||
it 'should apply from_bottom correctly when self.edgesForExtendedLayout = UIRectEdgeNone is set' do
|
||||
# TODO, this fails
|
||||
#vc = RectTestController.new
|
||||
# TODO, figure out how to test this, probably need to present the controller
|
||||
#rect = vc.rmq.wrap(vc.test_view).frame
|
||||
#rect.log
|
||||
#rect.fb.should == 40
|
||||
#recGt.b.should == rect.t + rect.h
|
||||
|
||||
1.should == 1
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user