我的应用程序包含一个NSScrollView文档视图,其中包含一些垂直堆叠的文件NSTextViews- 每个文本视图在添加文本时都会在垂直方向上调整大小.
目前,这都是在代码中管理的.该NSTextViews自动调整,但我观察他们调整大小有NSViewFrameDidChangeNotification,重计算其所有来源,使他们不重叠,并调整其上海华盈(滚动视图的文档视图),使它们都适合和可滚动到.
这似乎是自动布局的完美候选人!我NSLayoutConstraints在第一个文本视图和它的容器,最后一个文本视图及其容器之间设置,以及彼此之间的每个文本视图.然后,如果任何文本视图增长,它会自动"按下"它下面的文本视图的来源以满足约束,最终增加文档视图的大小,每个人都很高兴!
除此之外,似乎没有办法NSTextView在基于约束的布局中添加文本时自动增长?使用与NSTextView之前输入的文本自动扩展完全相同的内容,如果我没有为其高度指定约束,则将其自动解析为0并且不显示.如果我确实指定了约束,即使是不等式(例如> = 20),它仍然会停留在该大小,并且不会随着文本的添加而增长.
我怀疑这与NSTextView的实现有关-intrinsicContentSize,默认情况下会返回(NSViewNoInstrinsicMetric, NSViewNoInstrinsicMetric).
所以我的问题是:如果我根据我的文本布局NSTextView返回更有意义intrinsicContentSize的子类,那么我的自动布局会按预期工作吗?
关于实现intrinsicContentSize垂直调整大小NSTextView的任何指针?
我已经启用了自动布局在iOS视图,并有UIToolbar一个UISearchBar与UISegmentControl载带的工具栏.我想要UISearchBar有一个灵活的宽度,所以我需要添加一个约束来强制这个,但从我可以告诉你不能添加约束到UIToolbar接口生成器中的项目.所有选项均已禁用.
在AutoLayout我完成这个之前autoresizingmasks.
是否允许约束UIToolbars/UINavigationBars?
使用autolayout时如何才能实现这一目标?
在其中一个WWDC 2012视频,Auto Layout By Example中,他们使用Autolayout演示了一个OS X应用程序,在大约7或8分钟时,他展示了如何在单个视图中取消选中Attributes Inspector中的一个框,以及这个盒子被称为"将面膜自动化为约束".现在,我很清楚这个盒子的代码等价,translatesAutoresizingMaskIntoConstraintsboolean,但我似乎无法在iOS或OS X项目中的任何位置找到此复选框.我的项目使用Autolayout.我真的很想要这个复选框,因为我在学习Autolayout(以及将spring/struts应用程序转换为AL)时遇到的困难之一是Xcode为每个视图生成的百万限制,以及如何清理它们并明智地覆盖它们代码中的部分/全部.为了一次转换一个视图,我想要的是关闭那些自动生成的约束.
为什么我看不到这个复选框?我正在使用Xcode 4.6.
我有两个UILabel排在一起,左右调整,所以它看起来像下面.
|-Some text left adjusted----------some other text right adjusted-|
Run Code Online (Sandbox Code Playgroud)
两个标签都有adjustsFontSizeToFitWidth = YES,并使用以下约束相互链接
[NSLayoutConstraint constraintWithItem:_rightLabel
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:_leftLabel
attribute:NSLayoutAttributeRight
multiplier:1
constant:10]
Run Code Online (Sandbox Code Playgroud)
因此,它们占用尽可能多的空间,如果没有足够的空间用于原始字体大小,则会因为adjustsFontSizeToFitWidth而降低,因此不会截断任何文本.
我的问题是,当由于长文本需要降低其字体大小时,我希望另一个标签也降低其字体大小,以便两者都是相同的大小而不是一个大小可能是另一个大小的两倍.我想约束字体大小以匹配但唉我不知道如何这样,任何想法?
我在使用Autolayout和约束来调整UIView的大小时遇到了问题.我想改变原点(小于或等于原始)和宽度(大于或等于原始)但我得到了这个:不等式约束歧义
你有解决这个问题的想法吗?
谢谢


我在我的项目中使用Xcode 5和autolayout.我有一个.xib文件,它们之间有很多子视图和约束.现在我需要创建一个中间全屏容器视图并将所有子视图放在那里.所以现在我有了view->subviews,我想要view->container view->subviews.当我在IB中通过将子视图拖动到容器视图中来执行此操作时,它们都会居中并且所有约束都会丢失.手动恢复所有约束会有点困难.是否有一种明智的方法可以保持所有子视图的位置和约束?
我有:
我在界面生成器"有不明确的可滚动内容宽度"中发出警告.

我知道解决这个问题的唯一方法是设置尾随和前导约束.但是对于不同的iPhone(5.5",4.7",4"),我需要设置不同的尾随和前导约束.
如何消除此警告仍然具有固定W和H的所有iPhone尺寸的水平视图居中?
我创建Github repo来说明这个问题:ScrollViewAmbigous
这与UIScrollView Scrollable Content Size Ambiguity不重复 ,但它类似(虽然没有回答),但这个问题尤其与不同尺寸的iPhone有关.
我在Swift上开发iOS通用应用程序,使用自动布局并仅支持肖像.
我发现UIViewController#viewdidlayoutsubviews多次被叫.相反,viewDidLoad只能在启动MyApp时调用一次UIViewController.
为什么要viewdidlayoutsubviews多次打电话?每个UIView(UIButtons,UITextFields等等)的约束将按顺序执行?
任何信息将不胜感激.
我有一个iOS 8应用程序,我有一个搜索结果页面,每个单元格根据某个标签的高度进行自动调整.但是,在视图首次加载后,显示的单元格不会自动调整大小.向下滚动后面的单元格大小正确.我在故事板中连接了自动布局约束.我在viewDidLoad中有以下代码.
- (void)viewDidLoad {
[super viewDidLoad];
//configure tableView so that we use autolayout enabled row heights
self.tableView.estimatedRowHeight = 68;
self.tableView.rowHeight = UITableViewAutomaticDimension;
}
Run Code Online (Sandbox Code Playgroud)
还有其他人经历过这个吗?
我有一个简单的视图与文本和图像.我在iPhone6Plus和iPhone5上运行了这个应用程序.然后我制作了两者的截图并放大了iPhone5截图,使其与iPhone6Plus截图的大小相匹配.结果如下:

你可以看到文本的大小,图像的大小和位置不一样,但它们应该在不同的屏幕大小上看起来相同.
以下是在不同屏幕上运行的天气应用程序的示例:

如您所见,文本和图像的大小和位置是相同的.
图像从资产目录加载:
imageView.image = UIImage(named: "shower3")
self.view.addSubView(imageView)
imageView.center = self.view.center
Run Code Online (Sandbox Code Playgroud)
我只创建了一个128x128图像并将其放入资产目录中的@ 1x版本.
让我重新说一下.我在iPhone5上运行了另一个应用程序makecreenshotshot和iPhone6截图.然后我将两个屏幕截图调整为相同的大小.然后我看到两个截图上的字体大小和图像尺寸都完全相同.这意味着在每个设备上,字体和图像必须具有不同的尺寸.我怎样才能做到这一点?
如何在不同的屏幕尺寸上实现该文本和图像具有相同的比例?天气应用程序如何做到这一点?
autolayout ×10
ios ×8
constraints ×2
objective-c ×2
swift ×2
xcode ×2
cocoa ×1
cocoa-touch ×1
ios7 ×1
ios8 ×1
iphone ×1
macos ×1
nstextview ×1
osx-lion ×1
uilabel ×1
uiscrollview ×1
uitableview ×1
uitoolbar ×1
xcode6 ×1
xib ×1