gpt4 book ai didi

uiview - 在 Storyboard中重用 uiview xib

转载 作者:行者123 更新时间:2023-12-03 05:19:46 25 4
gpt4 key购买 nike

我通常喜欢在界面生成器中创建和设计我的 uiview。有时我需要在 xib 中创建单个 View ,该 View 可以在 Storyboard的多个 View Controller 中重用。

最佳答案

在 Storyboard中重用并渲染 xib。

使用 Swift 2.2 和 Xcode 7.3.1 进行测试

1 ---- 创建一个名为“DesignableXibView”的新 UIView

  • 文件 > 新建 > 文件 > 源 > Cocoa Touch 类 > UIView

2 ---- 创建一个名为“DesignableXibView”的匹配xib文件

  • 文件 > 新建 > 文件 > 用户界面 > View

3 ---- 设置xib的文件所有者

  1. 选择 xib
  2. 选择文件的所有者
  3. 在身份检查器中将自定义类设置为“DesignableXibView”。

Setting a Xib's Owner to a Custom Class

  • 注意:不要在 xib 上设置 View 的自定义类。只有文件所有者!

4 ---- DesignableXibView的实现

//  DesignableXibView.swift

import UIKit

@IBDesignable

class DesignableXibView: UIView {

var contentView : UIView?

override init(frame: CGRect) {
super.init(frame: frame)
xibSetup()
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
xibSetup()
}

func xibSetup() {
contentView = loadViewFromNib()

// use bounds not frame or it'll be offset
contentView!.frame = bounds

// Make the view stretch with containing view
contentView!.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight]

// Adding custom subview on top of our view (over any custom drawing > see note below)
addSubview(contentView!)
}

func loadViewFromNib() -> UIView! {

let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: String(self.dynamicType), bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView

return view
}

}

5 ---- 在 Storyboard中测试可重用 View

  1. 打开 Storyboard
  2. 添加 View
  3. 设置该 View 的自定义类
  4. 等一下...轰!!

Xib Rendering Inside a Storyboard View Controller

关于uiview - 在 Storyboard中重用 uiview xib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30335089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com