Ios 如何在objective c中将imageView框架的矩形作为子视图
如何在objective c中将imageView框架的矩形作为子视图?Ios 如何在objective c中将imageView框架的矩形作为子视图,ios,Ios,如何在objective c中将imageView框架的矩形作为子视图? 内部视图控制器我有一个视图,在该视图内我想放置一个imageView,imageView框架应小于视图框架的框架,imageView应位于视图框架的中心。首先,设置imageView的大小,其次,设置imageView的坐标,下面是代码: UIView *container = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)]; co
内部视图控制器我有一个视图,在该视图内我想放置一个imageView,imageView框架应小于视图框架的框架,imageView应位于视图框架的中心。首先,设置imageView的大小,其次,设置imageView的坐标,下面是代码:
UIView *container = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
container.backgroundColor = [UIColor blueColor];
[self.view addSubview:container];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
imageView.backgroundColor = [UIColor redColor];
[container addSubview:imageView];
CGRect f = imageView.frame;
f.origin.x = CGRectGetWidth(container.bounds) / 2.0f - CGRectGetWidth(f) / 2.0;
f.origin.y = CGRectGetHeight(container.bounds) / 2.0f - CGRectGetHeight(f) / 2.0f;
imageView.frame = f;
或者设置imageView的中心(警告!imageView将添加到self.view
!)
此外,还可以使用自动布局,如下所示:
UIView *container = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
container.backgroundColor = [UIColor blueColor];
[self.view addSubview:container];
UIImageView *imageView = [[UIImageView alloc] init];
imageView.backgroundColor = [UIColor redColor];
[container addSubview:imageView];
imageView.translatesAutoresizingMaskIntoConstraints = NO;
NSLayoutConstraint *c1 = [NSLayoutConstraint constraintWithItem:imageView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:100];
NSLayoutConstraint *c2 = [NSLayoutConstraint constraintWithItem:imageView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:100];
NSLayoutConstraint *c3 = [NSLayoutConstraint constraintWithItem:imageView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:container attribute:NSLayoutAttributeCenterX multiplier:1 constant:0];
NSLayoutConstraint *c4 = [NSLayoutConstraint constraintWithItem:imageView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:container attribute:NSLayoutAttributeCenterY multiplier:1 constant:0];
c1.active = YES;
c2.active = YES;
c3.active = YES;
c4.active = YES;
上述所有解决方案都将imageView置于容器的中心
UIView *container = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];
container.backgroundColor = [UIColor blueColor];
[self.view addSubview:container];
UIImageView *imageView = [[UIImageView alloc] init];
imageView.backgroundColor = [UIColor redColor];
[container addSubview:imageView];
imageView.translatesAutoresizingMaskIntoConstraints = NO;
NSLayoutConstraint *c1 = [NSLayoutConstraint constraintWithItem:imageView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:100];
NSLayoutConstraint *c2 = [NSLayoutConstraint constraintWithItem:imageView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:100];
NSLayoutConstraint *c3 = [NSLayoutConstraint constraintWithItem:imageView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:container attribute:NSLayoutAttributeCenterX multiplier:1 constant:0];
NSLayoutConstraint *c4 = [NSLayoutConstraint constraintWithItem:imageView attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:container attribute:NSLayoutAttributeCenterY multiplier:1 constant:0];
c1.active = YES;
c2.active = YES;
c3.active = YES;
c4.active = YES;