自定义UIView故事板类不是在模拟器中创建的,显示在界面构建器中

时间:2016-08-19 10:04:38

标签: ios xcode cocoa-touch uiview interface-builder

我试图创建一个基本上是循环进度条的自定义Storyboard组件。我已经创建了继承UIView的自定义类(称为CircularProgressView)。然后我在界面构建器中创建一个UIView,并使其成为我的CircualProgressView类的一个实例。所有内容都在Interface Builder Circular Progress View in Interface Builder中按预期呈现,但是当我在模拟器或我的设备(iPhone 6)中加载应用程序时,它根本就不存在。我尝试在函数initWithFrameinitWithCoderdrawRect中设置断点,但没有达到断点。为什么?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我曾经遇到过这个问题,所以我在UIView类中做了什么,我编写了自定义初始化程序,如下所示:

-(id) initAndConfigure{
    if (![self.subviews count])
    {
        NSBundle *mainBundle = [NSBundle mainBundle];
        NSArray *loadedViews = [mainBundle loadNibNamed:@"YourNibName" owner:nil options:nil];
        PlayerControlView *loadedView = [loadedViews firstObject];

        loadedView.frame = self.frame;
        loadedView.autoresizingMask = self.autoresizingMask;
        loadedView.translatesAutoresizingMaskIntoConstraints =
        self.translatesAutoresizingMaskIntoConstraints;

        for (NSLayoutConstraint *constraint in self.constraints)
        {
            id firstItem = constraint.firstItem;
            if (firstItem == self)
            {
                firstItem = loadedView;
            }
            id secondItem = constraint.secondItem;
            if (secondItem == self)
            {
                secondItem = loadedView;
            }
            [loadedView addConstraint:
             [NSLayoutConstraint constraintWithItem:firstItem
                                          attribute:constraint.firstAttribute
                                          relatedBy:constraint.relation
                                             toItem:secondItem
                                          attribute:constraint.secondAttribute
                                         multiplier:constraint.multiplier
                                           constant:constraint.constant]];
        }
        return loadedView;
    }
    [self configureView];
    return self;
}

[self configureView]函数用于配置其他视图项。

  

当在.xib中创建UIView并且有人尝试时会发生此问题   在其他.xib中使用此视图。

希望这会对你有所帮助。