将 XIB 文件自动调整为屏幕大小

Posted

技术标签:

【中文标题】将 XIB 文件自动调整为屏幕大小【英文标题】:auto-resize a XIB file to be as the screen size 【发布时间】:2016-07-24 15:59:52 【问题描述】:

我有一个视图控制器,其中嵌入了一个滚动视图。在这个滚动视图中,我添加了 4 个视图,它们是 XIB 文件视图。 XIB 文件大小是“推断”的,尽管看起来是 iphone5 大小。加载后,它们不会自动调整为屏幕大小,而是保持在 iphone5 大小。

如何使 XIB 文件的大小与其加载的屏幕大小相同?

编辑:

我也尝试通过如下代码更改 nib 文件的大小:

 // 1) Create the three views used in the swipe container view
        let AVc :AViewController =  AViewController(nibName: "AViewController", bundle: nil);
        let BVc :BViewController =  BViewController(nibName: "BViewController", bundle: nil);
        let CVc :CViewController =  CViewController(nibName: "CViewController", bundle: nil); 
        let DVc :DViewController =  DViewController(nibName: "DViewController", bundle: nil);

        AVc.view.frame = CGRectMake(0 , 0, self.view.frame.width, self.view.frame.height)
        BVc.view.frame = CGRectMake(0 , 0, self.view.frame.width, self.view.frame.height)
        CVc.view.frame = CGRectMake(0 , 0, self.view.frame.width, self.view.frame.height)
        DVc.view.frame = CGRectMake(0 , 0, self.view.frame.width, self.view.frame.height)

        // 2) Add in each view to the container view hierarchy
        //    Add them in opposite order since the view hieracrhy is a stack

        self.addChildViewController(DVc);
        self.scrollView!.addSubview(DVc.view);
        DVc.didMoveToParentViewController(self);

        self.addChildViewController(CVc);
        self.scrollView!.addSubview(CVc.view);
        CVc.didMoveToParentViewController(self);

        self.addChildViewController(BVc);
        self.scrollView!.addSubview(BVc.view);
        BVc.didMoveToParentViewController(self);

        self.addChildViewController(AVc);
        self.scrollView!.addSubview(AVc.view);
        AVc.didMoveToParentViewController(self);

这仍然没有影响,它加载了错误的大小。

【问题讨论】:

我没有使用任何自动布局 【参考方案1】:

我建议您先使用大小类,然后应用必要的常量,这会有些困难,但随着时间的推移,您将学会如何应用大小类和常量。 Here 是您可以找到最佳 examples 的链接。

【讨论】:

【参考方案2】:

如果你不使用自动布局,那么你可以简单地通过 for 循环添加四个视图:

let bounds = UIScreen.mainScreen().bounds
let width = bounds.size.width
let height = bounds.size.height

var yAxis: CGFloat = 0.0

for i in 0...3 
   let rect: CGRect = CGRectMake(0, yAxis, width, height)

   swift i 
       case 0:
          view1.frame = rect
       case 1:
          view2.frame = rect
       case 2:
          view3.frame = rect
       case 3:
          view4.frame = rect
       default:
          break
   

   yAxis = yAxis + height

view1、view2、view3 和 view4 是您的 4 个 xib 视图。 另外,将滚动视图的内容大小设置为高度 yAxis。

推荐,你应该使用 AutoLayout 它会减少代码行数。

【讨论】:

我没有使用自动布局,但谢谢,我会试一试。 谢谢我已经做了一些类似的事情,但仍然没有影响。我已经添加了我的代码来展示我所做的事情。

以上是关于将 XIB 文件自动调整为屏幕大小的主要内容,如果未能解决你的问题,请参考以下文章

自动调整大小不适用于 xib 文件中的视图内容

根据 iPhone 屏幕大小显示不同的 xib 文件

XIB TableViewCell 未调整大小以适应宽度

自动调整 iPhone xib 应用程序到 ipad 的大小

html Bootstrap:image_responsive(将图片自动调整为屏幕大小)

根据设备屏幕从 xib 文件中获取大小参数