目标C类中的约束

时间:2015-07-15 16:51:34

标签: objective-c xcode constraints autoresizingmask

我目前正在尝试在课程上添加UIIMageView。 在没有约束的情况下,我可以添加诸如UIImageView之类的对象而没有任何障碍:[self addSubview:myImage];。 但是,当我添加[myImage setTranslatesAutoresizingMaskIntoConstraints: NO];以及所需的约束时,图像将添加到UIViewController与类。

(目前,sizeX / Y是一个单独的算法,用于设置图像的宽度和高度,并且假设约束有效,则不需要)

1)为什么会这样?

2)如何添加带有约束的UIImageView

以下是代码:

UIImageView *myImage = [[UIImageView alloc] init];
//AutoResize...
myImage.frame = CGRectMake(0, 0, sizeX, sizeY);
myImage.center = CGPointMake(placementX, placementY);

myImage.image = [UIImage imageNamed:@"customImage"];

[self addSubview:myImage];

                // Width constraint
 [self addConstraint:[NSLayoutConstraint constraintWithItem:myImage
                                                                 attribute:NSLayoutAttributeWidth
                                                                 relatedBy:NSLayoutRelationEqual
                                                                    toItem:self
                                                                 attribute:NSLayoutAttributeWidth
                                                                multiplier:0.5
                                                                  constant:0]];

                // Height constraint
 [self addConstraint:[NSLayoutConstraint constraintWithItem:myImage
                                                                 attribute:NSLayoutAttributeHeight
                                                                 relatedBy:NSLayoutRelationEqual
                                                                    toItem:self
                                                                 attribute:NSLayoutAttributeHeight
                                                                multiplier:0.5
                                                                  constant:0]];

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我目前正在尝试在课程上添加UIMageView ...

     

...图像被添加到视图控制器而不是类。

这些陈述对我来说都没有意义,但是......

查看约束代码,可以为图像视图的宽度和高度设置约束,但这还不足以明确定位图像视图。您需要添加2个约束:用于图像视图的垂直和水平位置。例如,如果您希望图像视图以其超级视图为中心:

[self addConstraint:[NSLayoutConstraint constraintWithItem:myImage
                                                             attribute:NSLayoutAttributeCenterX
                                                             relatedBy:NSLayoutRelationEqual
                                                                toItem:self
                                                             attribute:NSLayoutAttributeCenterX
                                                            multiplier:1.0
                                                              constant:0]];


[self addConstraint:[NSLayoutConstraint constraintWithItem:myImage
                                                             attribute:NSLayoutAttributeCenterY
                                                             relatedBy:NSLayoutRelationEqual
                                                                toItem:self
                                                             attribute:NSLayoutAttributeCenterY
                                                            multiplier:1.0
                                                              constant:0]];