如何在 Storyboard 中显示 UIView [关闭]

Posted

技术标签:

【中文标题】如何在 Storyboard 中显示 UIView [关闭]【英文标题】:How to display UIView in Storyboard [closed] 【发布时间】:2013-10-23 19:30:19 【问题描述】:

我喜欢在情节提要中显示 uiview,因此我不必以编程方式进行设计。 我从旧版本的 XCode 中看到了一些教程,但它似乎不适用于 XCode 5。 我有什么问题吗?我基本上知道如何用代码实现它并展示它。

我看到您必须将 Size 设置为 FreeForm,然后您可以调整它并将其添加到其他视图中,就像在代码中一样。

顺便想开发一个ios 7 App。

提前致谢!

【问题讨论】:

您实际上尝试做了什么来完成这项工作? 因为我想为应用创建一个“模式”。所以我想基本上有一个小窗口,我可以随时显示和隐藏。我有一个类似测试的东西,其中有必要显示/隐藏 2 个不同的窗口,我不想在我的故事板中使用多个视图,因为这个过程重复了 10 次左右。我是 iOS 开发新手,所以也许有更多更好的解决方案 【参考方案1】:

如果您使用故事板并设置了自动布局,那么您很难设置视图的大小。由于您只需要 UIView 来显示在您的故事板中,请尝试这种方法。

添加新文件,选择用户界面 选择什么类型的 UI 并不重要 确保您的类是 UIView 的子类

现在它会为您创建一个新的 xib。打开该 xib 并删除在界面生成器中看到的内容。现在将 UIView 拖到界面构建器上。您可以根据需要调整和修改它。当你需要它时,你可以做这样的事情

MyViewClass* myViewObject = [[[NSBundle mainBundle] loadNibNamed:@"MyViewClassNib" owner:self options:nil] objectAtIndex:0]

更新:

像这样创建你的视图 .h 文件

@interface CardView : UIView
    

@property (nonatomic, retain) IBOutlet UIButton *rating_btn;

-(IBAction)rating:(id)sender;
+ (id)cardView;

你的 .m 文件

 +(id)cardView

    CardView *cardView = [[[NSBundle mainBundle] loadNibNamed:@"CardView" owner:nil options:nil] lastObject];
    if ([cardView isKindOfClass:[CardView class]])
    
        return cardView;
    
    else
        return nil;


-(IBAction)rating:(id)sender

    NSLog(@"Button pressed");

像这样在你的主视图控制器中使用这些

CardView *card = [CardView cardView];
[self addSubview:card];

确保您连接了 UIView 按钮。

【讨论】:

它就是这样工作的。但我希望它有按钮,只有数据显示。那么如何将 ViewController 连接到它呢?我尝试了正常的方式。添加文件并通过将类名写入身份检查器来连接它,但视图无法识别它。一般有没有办法做到这一点? 我尝试使用 UIWindow,但是当我显示它时它隐藏了主视图。 您不能将 UIWindow 用于您想要实现的目标。查看更新的答案 谢谢!你帮了我很多! 还有一个问题:为什么我需要 +(id)cardView 中的 if 语句?对于编译器来说,它是一个 CardView 不是很明显吗?

以上是关于如何在 Storyboard 中显示 UIView [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

层的 UIView 的子层在 Storyboard 中显示为 @IBDesignable,但在模拟器中却没有

在 UIViewController Storyboard 中访问 UIView

Storyboard UIView 在滚动时切断对象

如何将 UIView 固定到 Storyboard 中 UIScrollView 的底部?

UIView 未显示在情节提要上

在 StoryBoard 中查找 UIView