我有2个观看次数
首先是view1大小是100x100
第二个是view2大小是200 x200
我的代码是
[view1 addSubview:view2];
但view2的大小大于view1
如何使view2更小以适合view1的大小
谢谢
答案 0 :(得分:3)
实现这一目标的现代方法是使用自动布局。这样,无论您的视图如何旋转或更改,它们都将保持相同的大小。
根据您的设置,它会是这样的
NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:view2 attribute:NSLayoutAttributeWidth multiplier:1.f constant:0.f];
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:view2 attribute:NSLayoutAttributeHeight multiplier:1.f constant:0.f];
[view1 addConstraints:@[widthConstraint,heightConstraint]];
如果您需要定位较早的操作系统,请将帧设置为相等并使用autoresizingMask
。
答案 1 :(得分:2)
如果你想在较小的超视图中适应更大的子视图,那么:
1.使两个视图的size
相同/相等
2.将子视图的原点设为(0,0)。由于frame
属性在其超视图的坐标系中获取视图的位置,因此对于子视图原点将为(0,0)。
对于您的情况,您可以这样做:
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, view1.frame.size.width, view1.frame.size.height)];
[view1 addSubview:view2];
OR
UIView *view2 = [[UIView alloc] initWithFrame:view1.bounds];
[view1 addSubview:view2];
当您想要在较小的超级视图(UIView)中缩小较大的图像(UIImageView)时,这非常有用。
答案 2 :(得分:1)
视图可以嵌入其他视图并创建复杂的可视层次结构。这将在嵌入的视图(称为子视图)和执行嵌入的父视图(称为超级视图)之间创建父子关系。通常,子视图的可见区域不会剪切到其超级视图的边界,但在iOS中,您可以使用clipsToBounds属性来更改该行为。父视图可以包含任意数量的子视图,但每个子视图只有一个superview,负责适当地定位其子视图。
框架矩形,用于描述视图在超视图坐标系中的位置和大小。
边界矩形,用于描述视图在其坐标系中的位置和大小
因此,您应该设置view1.frame
或view2.bounds
[view1 setBounds:CGRectMake(`x`,`y`,`width`,`height`)];
或
[view2 setFrame:CGRectmake(`x`,`y`,`width`,`height`)];