【问题标题】:UIView Subclass: Detect the size of a UIView set up in Interface Builder which uses said UIView subclass as a custom classUIView 子类:检测在 Interface Builder 中设置的 UIView 的大小,它使用所述 UIView 子类作为自定义类
【发布时间】:2013-06-28 07:54:28
【问题描述】:

我有一个名为 BannerAdView 的类,它是 UIView 的子类。

我有一个在 Interface Builder 中设置的 UIView 对象。我使用 Identity Inspector 将 BannerAdView 设置为其自定义类。

BannerAdView 如何检测在 Identity Inspector 中设置的 UIView 的尺寸?

self.frame.size.height 和 self.frame.size.width 都返回 0.000000

【问题讨论】:

    标签: iphone ios objective-c ipad interface-builder


    【解决方案1】:

    BannerAdView中实现这个:

    - (void)awakeFromNib {
        [super awakeFromNib];
        NSLog(@"%@", NSStringFromCGRect(self.frame));
    }
    

    【讨论】:

    • 感谢您的建议,但控制台输出为:{{0, 0}, {0, 0}}
    • 界面生成器中是否有超级视图?
    • 是的。超级视图是我的主要 UIViewController。我想我可以在主 UIViewController 中设置一个类方法来返回我在 IB 中创建的 UIView 的大小,然后从 UIViewSubclass 调用该类方法,但我觉得应该有更简单的方法来执行此操作。
    • 控制器不能是超级视图。 BannerAdView 是视图控制器中的根视图吗?
    • 你也可以试试didMoveToSuperview而不是awakeFromNib
    【解决方案2】:

    您可以看到 UIView 的尺寸。

    NSLog(@"My view's frame is: %@", NSStringFromCGRect(myView.frame));
    

    我希望它会工作

    【讨论】:

    • 该类是 UIView 的子类,所以我假设您的意思是写类似“NSLog(@"My view's frame is: %@", NSStringFromCGRect(self.frame));"这将返回:我的视图框架是:{{0, 0}, {0, 0}}
    • I did example.ı got in log => 我的视图框架是:{{40, 20}, {241, 455}} 你能看看这里有源代码吗:box.com/s/foqb5f3i910u80ycg1zw
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多