2017-05-16 73 views
0

我BetRecordAniChooserView的厦门国际银行:当我动画自定义视图,视图的高度改变

enter image description here

我的ViewController在模拟器:

你可以看到背景图选择器视图高度的降低。

我的代码如下:

BetRecordAniChooserView.h:

#import <UIKit/UIKit.h> 

typedef void(^ChooseBlock)(NSString *choosedStr); 

@interface BetTRecordAniChooserView : UIView 

@property (nonatomic, assign) UIViewController *owener; 
@property (nonatomic, assign) BOOL isShow; 

@property (nonatomic, copy) ChooseBlock block; 

- (void)showSelf; 
- (void)hideSelf; 

@end 

BetRecordAniChooserView.m:

#import "BetTRecordAniChooserView.h" 

@interface BetTRecordAniChooserView() 

@property (weak, nonatomic) IBOutlet UIButton *all_button; 
@property (weak, nonatomic) IBOutlet UIButton *check_pending_button; 
@property (weak, nonatomic) IBOutlet UIButton *deposited_button; 
@property (weak, nonatomic) IBOutlet UIButton *have_cancel_button; 


@end 

@implementation BetTRecordAniChooserView 

/* 
// Only override drawRect: if you perform custom drawing. 
// An empty implementation adversely affects performance during animation. 
- (void)drawRect:(CGRect)rect { 
    // Drawing code 
} 
*/ 

- (void)awakeFromNib { 

    [super awakeFromNib]; 

    self.frame = CGRectMake(0, 0, self.bounds.size.width, 100); 

    self.all_button.selected = YES; 
} 

#pragma mark - actions 

- (IBAction)allAction:(UIButton *)sender { 

    self.block(sender.titleLabel.text); 
} 

- (IBAction)checkPendingAction:(UIButton *)sender { 
    self.block(sender.titleLabel.text); 
} 

- (IBAction)haveDepositeAction:(UIButton *)sender { 
    self.block(sender.titleLabel.text); 
} 

- (IBAction)haveCancelAction:(UIButton *)sender { 
    self.block(sender.titleLabel.text); 
} 



#pragma mark - methods 

- (void)showSelf { 

    CGRect temp_frame = self.frame; 

    self.isShow = YES; 

    [UIView animateWithDuration:0.3 animations:^{ 
     self.frame = CGRectMake(temp_frame.origin.x, temp_frame.origin.y + temp_frame.size.height, temp_frame.size.width, temp_frame.size.height); 
    }]; 

} 

- (void)hideSelf { 

    CGRect temp_frame = self.frame; 

    self.isShow = NO; 

    [UIView animateWithDuration:0.3 animations:^{ 
     self.frame = CGRectMake(temp_frame.origin.x, temp_frame.origin.y - temp_frame.size.height, temp_frame.size.width, temp_frame.size.height); 
    } completion:^(BOOL finished) { 

    }]; 
} 



@end 

在我ViewController.m:

#import "ViewController.h" 
#import "BetTRecordAniChooserView.h" 

@interface ViewController() 
{ 
    BetTRecordAniChooserView *_chooser_view; 
} 


@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    _chooser_view = [[NSBundle mainBundle] loadNibNamed:@"BetTRecordAniChooserView" owner:self options:nil].firstObject; 
    //float width = self.view.bounds.size.width; 
    //float height = 100.f; 
    //_chooser_view.frame = CGRectMake(0, -height + 64, width, height); 
    _chooser_view.owener = self; 

    [self.view addSubview:_chooser_view]; 

} 


- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (IBAction)actionA:(UIButton *)sender { 


    if (_chooser_view.isShow) { 
     [_chooser_view hideSelf]; 
    } else { 
     [_chooser_view showSelf]; 
    } 
} 

@end 

你可以见所述BetRecordAniChooserViewawakeFromnNib方法:

框架高度I设定100

self.frame = CGRectMake(0, 0, self.bounds.size.width, 100); 

但是,当我开始模拟器它成为36(下的按钮的灰色图)。

(LLDB)PO self.frame
(原点=(X = 0,Y = 0),大小=(宽度= 375,高度= 36))

回答

0

我发现的原因:

起初我使用灰色后视图的尾部,顶部,底部,顶部到它的超级视图,我得到这个问题。

然后我删除底部空间约束,并将高度约束添加到它。

enter image description here

然后,我不要再有问题,我可以拖出高度约束到.m文件也方便更换的高度。

但我不知道是否有一种方法,我不使用我的设置高度约束方法,仍然使用尾随,领先,底部,顶部约束来获得需求的影响。

相关问题