我正在尝试将图像添加到我的视图中。我尝试了以下代码:
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tag40pixelsborder.png"]];
imgView.frame = CGRectMake(200, 200, 30, 30);
// imgView.bounds = CGRectMake(300, 300, 32, 32);
[imgView setContentMode:UIViewContentModeScaleAspectFit];
[self.view addSubview:imgView];
NSLog(@"frame x %f", imgView.frame.origin.x);
NSLog(@"frame y %f", imgView.frame.origin.y);
但是图片没有出现在屏幕上,NSLog为“x”返回30.00,为“y”返回0.00如果我取消注释边界线并删除框架线,我得到80.00为“x”和80.00为“Y”。
我正在使用autolayout,但完全相同的代码适用于另一个视图!怎么了?
答案 0 :(得分:1)
如果您正在使用autolayout
,则表示您应该避免在代码中添加子视图!如果要执行此操作,还应以编程方式添加constrains
。你的代码很好,但autolayout正在搞乱它。如果您需要脏解决方案,则应在加载所有内容后添加此ImageView(例如,在viewDidAppear:
方法中)。
答案 1 :(得分:1)
如果您希望使用自动布局来执行此操作,那么您应该沿着这些方向执行某些操作。
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tag40pixelsborder.png"]];
imgView.translatesAutoresizingMaskIntoConstraints = NO;
[imgView setContentMode:UIViewContentModeScaleAspectFit];
[imgView sizeToFit];
[self.view addSubview:imgView];
然后你会想要设置我看到的自动布局约束是x = 200 y = 200
NSArray *constraints = [NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-(200)-[imgView]"
options:0
metrics:nil
views:@{ @"imgView" : imgView }];
[self.view addConstraints:constraints];
constraints = [NSLayoutConstraint
constraintsWithVisualFormat:@"|-(200)-[imgView]"
options:0
metrics:nil
views:@{ @"imgView" : imgView }];
[self.view addConstraints:constraints];
以上将使图像视图200从顶部开始,200从父视图的左侧开始,即在这种情况下为self.view。
如果你想要添加高度,你可以删除[imgView sizeToFit],只需在高度和高度约束上添加高度,即| - (200) - [imgView(width)]和标记的高度相同用V :.