Iphone 是否可以先设置一个XIB,然后设置大小,并将所有内容缩放到UIView中?

Iphone 是否可以先设置一个XIB,然后设置大小,并将所有内容缩放到UIView中?,iphone,ios,cocoa-touch,ipad,Iphone,Ios,Cocoa Touch,Ipad,我是iOS开发新手,我不确定我想做的事情是否可行。 基本上,我是通过Web服务检索一些产品,我想在屏幕上显示每一个产品,每行4个正方形。这些方块中的每一个(带有图像和产品名称)都是一个UIView,它有一个.h、.m和xib文件。我创建的每个视图如下所示: CategoryItemView *catItem = [[[NSBundle mainBundle] loadNibNamed:@"CategoryItemView" owner:self options:nil] objectAtInde

我是iOS开发新手,我不确定我想做的事情是否可行。 基本上,我是通过Web服务检索一些产品,我想在屏幕上显示每一个产品,每行4个正方形。这些方块中的每一个(带有图像和产品名称)都是一个UIView,它有一个.h、.m和xib文件。我创建的每个视图如下所示:

CategoryItemView *catItem = [[[NSBundle mainBundle] loadNibNamed:@"CategoryItemView" owner:self options:nil] objectAtIndex:0];
[categoryItems addObject:catItem];
我的立场是:

while (colCount < cols && items < [categoryItems count]) {
  CGRect  viewRect = CGRectMake( x * colCount + pad , (row * (x-pad)) + pad*row + pad, x - pad, x - pad );
  CategoryItemView* myView = [categoryItems objectAtIndex:items];
  myView.frame = viewRect;
  [self.view addSubview:myView];

  colCount++;
  items++;
 }
while(colCount
我想使用xib,这样我可以布局所有元素。但是,我找不到一种方法来布置xib,以便在像这样定位UIView时,所有元素都被缩放以适合并保持它们在UIView中的相对位置。这可能吗

更新:您可以在这里查看一个不起作用的2类示例


谢谢

autoresizingMask是您在这些视图中寻找的属性

从文档中:

自动重定位

一个整数位掩码,用于确定接收器如何调整自身大小 当其超级视图的边界更改时

@属性(非原子)UIViewAutoResising AutoResisingMask

讨论

当视图的边界更改时,该视图会自动调整其大小 根据每个子视图的自动调整大小掩码的子视图。你指定 通过组合中所述的常数,此掩码的值 UIVIEW使用C位OR运算符自动调整大小。结合这些 常量用于指定视图的哪些维度应增长或减少 相对于超级视图收缩。此属性的默认值 是UIViewAutoResizingOne,表示不应 根本没有调整大小

如果沿同一轴设置了多个选项,则默认设置为 行为是将大小差异按比例分布在 弹性部分。柔性部分越大,相对于 其他有弹性的部分,生长的可能性越大。例如 假设此属性包括UIViewAutoresizingFlexibleWidth和 UIViewAutoresizingFlexibleRightMargin常量,但不包括 UIViewAutoresizingFlexibleLeftMargin常量,因此指示 视图左边距的宽度是固定的,但视图的 宽度和右边距可能会改变。因此,视图似乎被锚定到 其superview的左侧,同时显示视图宽度和间隙 在视图的右侧增加

如果自动调整大小行为不提供您需要的精确布局 如果需要视图,可以使用自定义容器视图和替代 它的layoutSubviews方法可以更精确地定位子视图


谢谢,但这似乎没有什么区别。我是否需要在IB中设置模拟指标等?当观看Ui山风景时,它们大约是150磅见方。当我在IB中查看UIView时,它们是全尺寸的。如果我将度量设置为Freeform,那么我可以减小大小,但这些也不会调整大小。有点迷糊了。你在所有视图上都设置了遮罩吗?您能告诉我们如何设置掩码吗?我在IB中设置了所有良好的自动大小属性,现在我还添加了self.view.autoresizesSubviews=YES;self.view.autoresizingMask=uiviewsautoresizingflexiblewidth | uiviewsautoresizingflexiblewhight;在没有看到您的项目的情况下,我无法为您解决此问题。我最好的建议是从一个正方形开始玩面具,直到它达到你想要的效果。然后将其他方块逐一相加。还有,别忘了边际面具。是的,我可能会创建一个新项目,四处玩玩。谢谢你的帮助。