问题标签 [initwithframe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
30941 浏览

objective-c - Objective C - 自定义视图和实现 init 方法?

我有一个自定义视图,我希望能够in-codenib.

编写initWithFrameinitWithCoder方法的正确方法是什么?它们都共享一个用于某些初始化的代码块。

0 投票
1 回答
5986 浏览

ios - loadNibNamed 与 initWithFrame 两难设置框架的高度和宽度

我创建了一个与 .xib 文件关联的 UIView 子类。此 UIView 子类将在 UIViewController 中使用。在控制器中,我认为我们如何实例化 UIView 子类有两种选择:

我更喜欢允许我执行自定义初始化的第一种方法或其变体。唯一的问题是我必须指定一个框架的矩形,它已经在 . xib(我的意思是框架的高度和宽度MyUIView)。是的,我可以在 中再次对其进行硬编码aRect,但这维护起来很繁琐(例如,当我在 .xib 中更改 UI 的位置时,我也必须更新aRect)。

因此,应该考虑第二种方法,因为框架矩形是自动设置的。剩下的问题是我无法自定义初始化程序(例如,我想在初始化期间传递额外的参数)。

你的偏好是什么?你认为哪一个更好?

EDIT1:受塞尔吉奥回答的启发,我想出了这个解决方法:

0 投票
1 回答
157 浏览

objective-c - 如何在不被 initWithFrame: 覆盖的实例变量的情况下保存 NSView?

这里是可可新手。我试图在 NSView 中对实例变量进行编码以保存到文件中。但是,每当我对其进行编码时,它都会在调用 initWithFrame: 时被覆盖为 (null)。有没有办法可以跳过这种行为并将实例变量加载到未归档的 NSView 上?这是我的代码:

在上面的代码中,我首先将要填充的颜色设置为绿色,然后在 drawRect: 方法完成后将其更改为黄色,因此保存的颜色为黄色。但尽管如此,它在 initWithFrame: 日志注释中恢复为空,并且我再次获得绿屏。从外观上看,唯一的方法似乎是将数据与视图分离。但如果有更简单的方法,任何人都可以帮助我吗?

0 投票
4 回答
830 浏览

ios - 用 initWithFrame 编写的类——我想从 Storyboard 实例化

我想使用 UIExpandableTableView - https://github.com/OliverLetterer/UIExpandableTableView#readme

我遇到了一个问题,因为它唯一的初始化程序是initWithFrame

我一直在尝试从 Storyboard 初始化 tableView 并意识到我看到的错误是因为它initWithFrame从未被调用并且NSMutableDictionaries没有被初始化。如何解决这个问题?

如果不容易解决,我可以以编程方式实例化并使用initWithFrame,但除了想使用 Storyboard 之外,我也很好奇解决方案会是什么。


编辑以下是这些属性及其 ivars 在 UIExpandableTableView 中的声明方式。这是在 .h 文件中:

@private id __UIExpandableTableView_weak _myDelegate; id __UIExpandableTableView_weak _myDataSource;

}

这是 UIExpandableTableView 的 .m 文件的顶部。吨

0 投票
1 回答
536 浏览

ios - initWithFrame 被赋予空框架

我正在尝试使用利用 UINavigationBar 的自定义子类的 UINavigationController。但是,我遇到了 initWithFrame 的问题。当调用 initWithFrame 时,我打印出尺寸,它显示 0.0 宽度和 0.0 高度。但是,当我在 UINavigationBar 子类的 -(void) layoutSubviews 中打印出相同的框架时,该框架已正确设置。为什么 initWithFrame 接收到零大小的帧,我能做些什么来解决这个问题?手动调用 initWithFrame 或类似的东西听起来不正确,因为 UINavigationController 应该处理这个问题。以下是相关代码:

AppDelegate.m

自定义导航栏.m

谢谢!

0 投票
1 回答
225 浏览

ios - 子层仅在 initWithFrame 中创建时绘制,而不是 initWithCoder

我有一个带有子层(CAShapeLayer)和子视图(UILabel)的自定义视图。当我在其中创建图层initWithCoder并设置背景颜色时,它总是显示为黑色。但是,如果我将代码移入initWithFrame,则颜色会成功显示。

我们不应该在 中创建子层initWithCoder吗?

这是我可以让我的代码工作的唯一方法:

更新

原来我drawRect的填充颜色设置错误。我应该使用colorLayer.fillColor = myColor.CGColor而不是[myColor setFill]那时[path fill]

0 投票
2 回答
184 浏览

ios - initWithImage 工作正常 initWithFrame 被多次调用

我将一个UIImageViewUIView用于生成带有数字的简单颜色图块。如果我使用UIImageView,我使用initWithImage方法。如果我使用UIViewinitWithFrame则正在使用该方法。红色方形图像或以编程方式生成的红色视图用于初始化。
可以在两个屏幕截图中看到问题:何时initWithImage使用 - 一切正常。如果initWithFrame正在使用方法,我将以多个白色视图结束,而没有以正常视图的均匀顺序创建任何信息。附上所有截图和代码。

这是使用初始化时的外观initWithImageinitWithImage

这就是它的外观initWithFrame
initWithFrame

还有 for 循环,从另一个类(UIScrollView 子类)调用这些初始化程序。标签值是在视图初始化后设置的。

谷歌搜索给我的印象是这是一个非常普遍的问题,但我还没有找到任何解决方案来解决这个问题。此外,我仍然不明白,为什么数字完全正确,唯一的问题是视图位置。

0 投票
1 回答
349 浏览

ios - initWithFrame 和 loadNibNamed 不能一起工作?

我正在使用带有嵌入式 UIPageControl 的 Paged UIScrollView,如https://github.com/romaonthego/REPagedScrollView中所述。

我使用时代码工作正常

但我需要为我的项目使用一个 nib 文件。我这样称呼它:

几乎可以正常工作,我可以调用视图,唯一的问题是视图不听 initWithFrame:CGRectMake,它加载全屏,我再也看不到页面控件进行导航。

自动布局设置为关闭。

谁能指出我在这里错了?我能做些什么来解决这个问题?

最好的问候,大卫

0 投票
1 回答
383 浏览

macos - Cocoa:来自自定义视图代理的 initWithFrame 未被调用

根据苹果的文档Creating a Custom View如果您在 Interface Builder 中使用自定义视图代理,则应调用此方法。

如果您尚未为自定义视图创建 Interface Builder 调色板,则可以使用两种技术在 Interface Builder 中创建子类的实例。第一个是使用 Interface Builder 容器面板中的 Custom View 代理项。此视图是您的自定义视图的替身,允许您相对于其他视图定位和调整视图大小。然后,您可以使用检查器指定视图表示的 NSView 的子类。当应用程序加载 nib 文件时,自定义视图代理创建指定视图子类的新实例并使用 initWithFrame: 方法对其进行初始化,并根据需要传递任何自动调整大小标志。然后视图实例会收到一条 awakeFromNib 消息。

不幸的是,在我的情况下它没有被调用。有没有人不得不处理这个问题?

0 投票
2 回答
418 浏览

ios - `[UIView initWithFrame:]` 的文档冲突:可为空还是非空?

使用CLANG_ANALYZER_NONNULL(ie -Xclang nullability),我得到“从预期返回非空值的函数返回 Null ”:

在此处输入图像描述

使用 Xcode 7.3 和 iOS 9.3 文档,我检查initWithFrame:并返回nil

描述

但是 UIView.h 用 封装了所有东西NS_ASSUME_NONNULL_BEGIN,所以我们可以解释如下:

界面

作为:

所以文档解释它是nullable,而头文件说它是nonnull. 相信哪一个?

我应该写:

或者:

更新

Xcode 文档已更新,现在是: initWithFrame:文档

所以没有更多的冲突。