使用其父 VC 底部布局更改我的自定义 UIView 的约束
Posted
技术标签:
【中文标题】使用其父 VC 底部布局更改我的自定义 UIView 的约束【英文标题】:Change constraint of my custom UIView with its parent VC bottom layout 【发布时间】:2017-04-24 12:37:52 【问题描述】:我有一个自定义 UIView,我想在我的项目中超过一半的 VC 上反复重用它。此外,在所有这些 VC 上,它都应该位于底部。
出于某种原因,我想在操作时使用 bottomLayoutGuide 更改其底部约束。如果我不关心重用这种结构,这很容易做到。然后我可以使用我的视图的插座更改此约束。但是,这意味着我必须在其他 VC 中复制代码。
如何避免这种重复并重用我的自定义视图,当前 VC bottomLayoutGuide 的约束可以在操作上更改?
【问题讨论】:
添加该代码,以便我可以帮助您优化该代码。 【参考方案1】:创建一个类,它是 nsobject 的子类,并像这样编写函数。 在该子类中导入框架。
+ (UIView*)makeCustomViewWithBottomConstraint:(NSInteger)bottomConstant andHeight:(NSInteger)viewHeight inViewController:(UIViewController*)vc
UIView *customView = [[UIView alloc]init];
[vc.view addSubview:customView];
customView.backgroundColor = [UIColor purpleColor];
customView.translatesAutoresizingMaskIntoConstraints = NO;
NSDictionary *metrics = @@"viewHeight":@(viewHeight),
@"bottomConstant":@(bottomConstant);
NSDictionary *views = NSDictionaryOfVariableBindings(customView);
NSArray *hConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[view]|"
options:0
metrics:metrics
views:views];
NSArray *vConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[view(viewHeight)]-bottomConstant-|"
options:0
metrics:metrics
views:views];
[vc.view addConstraints:hConstraint];
[vc.view addConstraints:vConstraint];
return customView;
并像这样在所需的视图控制器中访问此类方法
[CustomViewClass makeCustomViewWithBottomConstraint:0 andHeight:40 inViewController:self];
我已经在 GitHub 中添加了示例项目。对不起目标 C。我仍然喜欢这种语言。 github link
【讨论】:
以上是关于使用其父 VC 底部布局更改我的自定义 UIView 的约束的主要内容,如果未能解决你的问题,请参考以下文章
使用自动布局在屏幕更改时调整自定义单元格中的 UIButton 字体