我有一个名为CustomRectangle
的自定义UIView子类。我在ViewController中实例化它并在ViewController中创建它的所有约束。我的目标是以编程方式在此UIView子类中创建所有约束。问题是我不知道如何在那里设置约束,因为我没有引用Storyboard中的任何其他视图。
例如,如果我希望我的视图CustomRectangle
基于另一个视图居中,我会在ViewController中为另一个视图创建一个@IBOutlet
,然后使用它来居中{{1} }。我不知道在UIView子类中是否可以这样做。
我想基于MVC(模型视图控制器)架构来做这件事。
最佳做法是什么?关于如何做到这一点的任何想法?
答案 0 :(得分:0)
您应该使用initWithFrame
CustomRectangle
方法来执行此操作。
for UIView's Subclass
,
- (id)initWithFrame:(CGRect)frame{
self = [super initWithFrame: frame];
if (self) {
[self setFrame:CGRectMake(0, 0, 50, 50)];
//add constraint here for example
[self addConstraint:[NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute: NSLayoutAttributeNotAnAttribute multiplier:1 constant:50]];
}
return self;
}
转换为swift这是客观的c代码!!
希望这会有所帮助:)
答案 1 :(得分:0)
你应该做一些事情:
例如:
CustomRectangle *customRectangle = [[CustomRectangle *customRectangle alloc] init];
// just to be sure
customRectangle.translatesAutoresizingMaskIntoConstraints = NO;
// just as an example
[self.view addConstraints[NSLayoutConstraint constraintWithItem:customRectangle attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:0]];
希望它有所帮助!!