【问题标题】:UIView in a custom xib自定义 xib 中的 UIView
【发布时间】:2015-04-17 11:03:32
【问题描述】:

我在 UIView 的单独子类和 xib 中创建了一个 UIView。

我在情节提要中有一个带有 UIView 的 UIViewController,我想将自定义 UIView 设置为此 UIView。

我将storyboard UIView中的类名修改为自定义UIView的类名。我得到了 UIView 的结果,但自定义 UIView 的帧大小。我在自定义 xib 中添加了正确的约束。由于错误的框架等,一些触摸手势无法正常工作。

如果我做错了什么,请建议我。

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];

    if (self) {

        // Load the UIView from Interface Builder
        [[NSBundle mainBundle] loadNibNamed:@"TMPhotoEdit" owner:self options:nil];

        // Add UIView to current UIView object.
        [self addSubview:self.view];
    }

    return self;
}

self.view 是我为它创建变量的同一个视图对象。

我希望框架设置为与我在情节提要中使用的相同。

使用代码使其工作的解决方案也对我有很大帮助。我的意思是,在情节提要中没有 IBOutlet,只需添加这个 UIView 并设置一些框架。

如果我调用 initWithFrame,我无法像上面对 initWithCoder 所做的那样设置 xib,如果我在代码中使用 initWithFrame,则不会调用 initWithCoder。

【问题讨论】:

    标签: ios objective-c iphone uiview


    【解决方案1】:

    假设您有一个想要在大小上类似于视图的实例

    self.view.frame = CGRectMake(otherView.frame.x, otherView.frame.y, otherView.frame.width, otherView.frame.height);
    

    【讨论】:

    • 我有 self.view 在当前场景中我没有使用它。 viewOne 将子视图添加到 self.view。和 xib 中的 customView。我希望 viewOne 看起来与添加了约束的 customView 完全相同,但在 viewOne 的框架中。
    • 在这种情况下,您可能需要以编程方式将所有约束从目标视图复制到目标视图。
    【解决方案2】:

    实际上你所做的并不正确,但无论如何你应该像这样加载自定义视图笔尖

    self.view = [[NSBundle mainBundle] loadNibNamed:@"TMPhotoEdit" owner:self options:nil][0];
    

    这又是不正确的,你为什么还需要它?但它会解决您的笔尖加载问题。

    【讨论】:

    • 您好,感谢您的回复。这实际上就是我正在做的事情。我不喜欢这种方式。您可以建议的任何其他可能的方式都非常有帮助。我有一个解决办法。但是,我发布这个只是为了找到一种简单的方法来直接将 XIB 链接到 Storyboard UIView 而无需编码并在代码中给出框架。
    猜你喜欢
    • 2018-06-15
    • 1970-01-01
    • 2020-05-16
    • 2017-10-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    相关资源
    最近更新 更多