Ios 设置自定义视图的动画时,视图的高度会更改

Ios 设置自定义视图的动画时,视图的高度会更改,ios,xib,Ios,Xib,我的BetRecordAniChooserView的xib: 模拟器中的我的ViewController: 您可以看到选择器视图的背景视图高度降低 我的代码如下: BetRecordAniChooserView.h: #import <UIKit/UIKit.h> typedef void(^ChooseBlock)(NSString *choosedStr); @interface BetTRecordAniChooserView : UIView @property (

我的BetRecordAniChooserView的xib:

模拟器中的我的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
在my 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
您可以在BetRecordAniChooserView的
awakeFromnNib
方法中看到:

我设置的帧高度
100

self.frame = CGRectMake(0, 0, self.bounds.size.width, 100);
但当我启动模拟器时,它变成了
36
(按钮下的灰色视图)

(lldb)po自身框架
(原点=(x=0,y=0),尺寸=(宽度=375,高度=36))

我找到了原因:

起初,我使用灰色后视图的尾随、前导、底部和顶部来显示其superview,我得到了这个问题

然后我删除底部空间约束,并向其添加高度约束

这样我就不再有这个问题了,我也可以将高度约束拖出
.m
文件,方便更改高度

但我不知道是否有一种方法我不使用我的设置高度约束方法,仍然使用尾随、前导、底部、顶部约束来获得需求效果

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