gpt4 book ai didi

ios - 如何在 nib 中为 UIView 应用自动布局?

转载 作者:行者123 更新时间:2023-12-01 18:10:24 24 4
gpt4 key购买 nike

我对 xib/nib 上的自动布局感到困惑。我对 Storyboard自动布局感到满意。

我想做的是:

1. 我有一个带有一个 View Controller 的 Storyboard和一个名为borderView 的UIView。它被正确约束。它为 iphone 5 和 6 正确调整大小。这是 Storyboard 的屏幕截图:

enter image description here

这是 iphone 5 中的边框 View :(我正在尝试将 nib View 作为 subview 添加到此边框 View )

enter image description here

2. 我创建了一个带有 UIView 的 Nib ,尺寸为 300 x 300。我希望将此 View 添加到我的 ViewController 中的borderVIew 中。这是我的 Nib 的屏幕截图。

注:我没有在任何地方给出任何高度或宽度限制。我只是给出了领先,trailing,顶部和底部。

enter image description here

我正在尝试将 Nib 添加到我的边框 View 中,如下所示:

这是我的 viewController 中的方法:

   -(void)viewDidAppear:(BOOL)animated{

[super viewDidAppear:animated];

[[NSBundle mainBundle] loadNibNamed:@"AlertView" owner:self options:nil];

[self.borderView addSubview:self.myAlertViewFromNib];

}

iphone 5 中的结果是:

enter image description here

如您所见,nib View 未在屏幕中心对齐(因为边框 View 与屏幕中心对齐)。

我不知道如何限制 nib 本身。谁能告诉我是否可以在 xcode 中做到这一点,或者我是否需要以编程方式给出约束?

最佳答案

您想将 AlertView 添加为在 View Controller 中对齐的中心
无需从 xib 设置大小,只需创建完美的约束 XIB View 并为大小定义宏,如下所示。

第 1 步有一些尺寸宏

#define kAlertViewWidth 300
#define kAlertViewHeight 300

@interface 中的第 2 步。请在 View Controller 中创建这样的属性
@property (nonatomic, retain) IBOutlet UIView *myViewFromNib;

属性的 Getter 方法
-(UIView *)myViewFromNib
{
if (!_myViewFromNib) {
_myViewFromNib = [[[NSBundle mainBundle] loadNibNamed:@"AlertView" owner:self options:nil] objectAtIndex:0];
_myViewFromNib.translatesAutoresizingMaskIntoConstraints = NO;


}
return _myViewFromNib;
}

//viewDidLoad方法中的第3步
 -(void)viewDidLoad{
[self setUpConstraints];
}

将添加所需约束的方法
    -(void)setUpConstraints
{
\[self.view addSubview:self.myViewFromNib\];
\[NSLayoutConstraint activateConstraints:@\[\[NSLayoutConstraint constraintWithItem:self.myViewFromNib attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0\],

\[NSLayoutConstraint constraintWithItem:self.myViewFromNib attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0\],

\[NSLayoutConstraint constraintWithItem:self.myViewFromNib attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0
constant:kAlertViewWidth\],

\[NSLayoutConstraint constraintWithItem:self.myViewFromNib attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0
constant:kAlertViewHeight\]\]\];
}

关于ios - 如何在 nib 中为 UIView 应用自动布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32663032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com