OSX:自动布局/约束不显示内容

Posted

技术标签:

【中文标题】OSX:自动布局/约束不显示内容【英文标题】:OSX: Auto layout/constraints not displaying content 【发布时间】:2014-11-17 05:22:33 【问题描述】:

我正在尝试创建一个包含 2 个标签的视图,并启用了自动布局。运行应用程序时,它会调整屏幕的大小,就像它有内容但什么都没有显示一样。这无需以编程方式设置任何文本。

这是我的看法:

这是我运行应用程序时发生的情况:

如果我继续在“日期”上方的多行标签中添加更多文本:

它对文本更改做出反应,但不显示任何内容。

这是我非常非常简短的 ViewController 代码:

TodayViewController.h:

#import <Cocoa/Cocoa.h>

@interface TodayViewController : NSViewController

@property (weak) IBOutlet NSTextField *multiLine;
@property (weak) IBOutlet NSTextField *theDate;

@end

TodayViewController.m:

#import "TodayViewController.h"
#import <NotificationCenter/NotificationCenter.h>

@interface TodayViewController () <NCWidgetProviding>

@end

@implementation TodayViewController
@synthesize multiLine, theDate;

- (void)viewDidLoad 
    [super viewDidLoad];
    //Weather I programmatically set text or not doesn't change anything.


- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult result))completionHandler 
    completionHandler(NCUpdateResultNoData);


@end

【问题讨论】:

您的视图是否固定在容器视图的底部? 【参考方案1】:

我可以看到约束设置不正确。这就是为什么在第一个屏幕截图中标签被标记为红色的原因。 如果约束设置正确,则显示的颜色为蓝色。 缺少约束意味着没有足够的信息来正确显示标签。

对于您的简单示例,使用自动布局就足够了。 选择您的视图,右下角应该是这样的按钮:

按 ist 并选择“清除约束”(注意!这将删除视图中的所有当前约束)。

在这之后你可以运行你的程序并且标签应该至少会显示出来。

现在再次单击该按钮并选择“添加缺少的约束”...我希望这会有所帮助。

【讨论】:

以上是关于OSX:自动布局/约束不显示内容的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发之自动布局显示网络请求内容

当我添加自动布局约束时,为啥我的 textview 不显示?

自动布局约束不起作用

为啥自动布局约束不起作用?

如何以编程方式在 UIPageViewController 中放置自动布局约束?

自动布局:显示相对于容器的内容