- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用自动布局和大小类从 xib 加载 View 。在该 View 中有一个 subview viewWithSizeClasses
,其高度限制取决于大小类。
我想做的是在 loadNibNamed
之后立即加载约束,以便根据当前 Size Class 获得正确的高度。
我尝试了 layoutSubviews()
、updateConstraints()
的各种组合,但无论我做什么,我总是得到默认的 Any, Any高度。
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let xibView = NSBundle.mainBundle().loadNibNamed("View", owner: self, options: nil).first as View
self.view.addSubview(xibView)
height = xibView.viewWithSizeClasses.frame.size.height // <- Any, Any height
}
我正在 iOS8 或更高版本上部署。
最佳答案
我在尝试对 iPhone 和 iPad 使用具有不同约束的相同 xib 时遇到了同样的麻烦。我的解决方案是在同一个 xib 中为每个尺寸类别创建一个 View 。然后在加载 xib 时,通过索引访问适当的 View 。在我的例子中,我的 Any-Any 尺寸类在索引 0 处,而 Regular-Regular 在索引 1 处。
NSArray *views = [NSBundle.mainBundle loadNibNamed:NSStringFromClass(self.class) owner:self options:nil];
UIView *view = views[IS_IPAD];
我相信您可以将其转换为 Swift。我还定义了一个全局宏
#define IS_IPAD (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
关于ios - 使用 loadNibNamed 和 Size Classes 获取约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27550282/
我知道这很直截了当,但经过太多的牵扯,我离解决方案还差得很远。 我看过解释如何使用 XIB 和所有内容创建 View 的教程。但他们都没有解决我在这里遇到的情况。 我有一个 XIB 文件,它是一个自定
我即将完成我的第一个 iPhone 应用程序,并想通过 Leaks Performance Tool 运行它。修复了一个明显的问题后,我剩下的唯一一个是一个 Nib 充当通过 loadNibNamed
由于某种原因,使用 loadNibNamed: 导致内存泄漏。 假设我有接口(interface): @interface Step : UIViewController { IBOutlet U
我正在使用 loadView 以编程方式设置 UIViewController 子类,并且想知道我是否做对了。当我在 Interface Builder 中查看“Interface.xib”时,其 V
我正在尝试使用 iPhone SDK 更改使用 Nib 创建的对象的类。 原因是;直到运行时我才知道我想要的 nib 对象是什么类(尽管它们将具有相同的基于 UIView 的父类(super clas
我实现了一个 loadNibNamed: 方法来唤醒一些窗口。 打开的窗口不是事件的。我怎样才能使这个窗口成为当前窗口,什么时候加载? 最佳答案 [窗口 makeKeyAndOrderFront: n
这是场景:一个简单的应用程序,有两个 View Controller 类和一个带有 1 个 View Controller 的 Storyboard。 ViewController 'Super' 继
我有类层次结构 ParentCell extends UITableViewCell ChildCell extends ParentCell ParentCell 有单独的 XIB,在子单元中,我仅
当我们使用loadNibNamed方法获取nib文件时,为什么会返回一个数组,不就是一个nib文件名对应一个nib文件吗?我尝试打印这个数组的计数,我发现它总是返回1。希望你能帮我解释一下,非常感谢!
我正在尝试在用户按下按钮时使用 loadnibnamed 加载名为“AddProgramView”的 xib 文件。我在 Storyboard中创建了 xib,在 xib View 中放置了各种 su
Apple Doc 说 nib 文件中最重要的对象之一是 File's Owner 对象 ,但它似乎是 nib 文件中的文件所有者,而不是 LoadNibName< 设置的对象 方法。我想知道它们之间
我熟悉为我自己的 UIView 子类创建 XIB 的大部分过程,但并非一切都对我正常工作——这主要与 IBOutlets 链接有关。我可以让他们以一种看似迂回的方式工作。 我的设置是这样的: 我有 M
我使用以下代码从 View Controller 中正确加载 Nib (XIB): self.myView.view = (MyView *)[[[NSBundle mainBundle] loadN
我有一个基于文档的 Cocoa 应用程序。在运行时,我通过调用 [NSBundle loadNibNamed:@"inspectorNIB"owner:self] 从包中加载额外的 Nib (其中 s
我正在尝试使用自定义 nib 文件来完成 UITableViewCell 的子类。 子类的名称是 MyCustomCell。 .xib 文件只有一个带有单个 UILabel“cellTitle”的 U
我创建了一个与 .xib 文件关联的 UIView 子类。此 UIView 子类将在 UIViewController 中使用。在 Controller 中,我认为我们如何实例化 UIView 子类有
我有一个带有 CustomClass = "BaseClass"的 view.xib 文件(我在 XCode 编辑器上配置它),所以我可以这样做: BaseClass *mBassClass= [[[
我正在使用自定义单元格并调用 loadNibNamed:。这似乎会导致内存泄漏,我不确定如何解决。如果之后我将顶级对象设置为 nil,我仍然会遇到泄漏。 topLevelObjects = [[NSB
我有一个 View Controller ,其中包含许多自定义 UIView。我尝试使用 InterfaceBuilder (IB) 定义自定义 UIView,并使用以下代码在 initWithFra
我有一个 ScrollView ,其中包含大约 40-50 个不同类型的对象。对象的类型根据对象的位置定义(例如,如果是 ScrollView 中的第 5 个对象 -> 是 Object1,如果它是
我是一名优秀的程序员,十分优秀!