标签: autolayout

使用Autolayout扩展NSTextViews

我的应用程序包含一个NSScrollView文档视图,其中包含一些垂直堆叠的文件NSTextViews- 每个文本视图在添加文本时都会在垂直方向上调整大小.

目前,这都是在代码中管理的.该NSTextViews自动调整,但我观察他们调整大小有NSViewFrameDidChangeNotification,重计算其所有来源,使他们不重叠,并调整其上海华盈(滚动视图的文档视图),使它们都适合和可滚动到.

这似乎是自动布局的完美候选人!我NSLayoutConstraints在第一个文本视图和它的容器,最后一个文本视图及其容器之间设置,以及彼此之间的每个文本视图.然后,如果任何文本视图增长,它会自动"按下"它下面的文本视图的来源以满足约束,最终增加文档视图的大小,每个人都很高兴!

除此之外,似乎没有办法NSTextView在基于约束的布局中添加文本时自动增长?使用与NSTextView之前输入的文本自动扩展完全相同的内容,如果我没有为其高度指定约束,则将其自动解析为0并且不显示.如果我确实指定了约束,即使是不等式(例如> = 20),它仍然会停留在该大小,并且不会随着文本的添加而增长.

我怀疑这与NSTextView的实现有关-intrinsicContentSize,默认情况下会返回(NSViewNoInstrinsicMetric, NSViewNoInstrinsicMetric).

所以我的问题是:如果我根据我的文本布局NSTextView返回更有意义intrinsicContentSize的子类,那么我的自动布局会按预期工作吗?

关于实现intrinsicContentSize垂直调整大小NSTextView的任何指针?

cocoa nstextview osx-lion autolayout

23
推荐指数
4
解决办法
8483
查看次数

iOS Autolayout和UIToolbar/UIBarButtonItems

我已经启用了自动布局在iOS视图,并有UIToolbar一个UISearchBarUISegmentControl载带的工具栏.我想要UISearchBar有一个灵活的宽度,所以我需要添加一个约束来强制这个,但从我可以告诉你不能添加约束到UIToolbar接口生成器中的项目.所有选项均已禁用.

AutoLayout我完成这个之前autoresizingmasks.

是否允许约束UIToolbars/UINavigationBars

使用autolayout时如何才能实现这一目标?

uitoolbar uibarbuttonitem ios autoresizingmask autolayout

23
推荐指数
3
解决办法
2万
查看次数

Xcode复选框在哪里"将面具自动调整为约束"

在其中一个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.

macos xcode ios autolayout nslayoutconstraint

23
推荐指数
1
解决办法
2万
查看次数

AutoLayout链接两个UILabel以具有相同的字体大小

我有两个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而降低,因此不会截断任何文本.

我的问题是,当由于长文本需要降低其字体大小时,我希望另一个标签也降低其字体大小,以便两者都是相同的大小而不是一个大小可能是另一个大小的两倍.我想约束字体大小以匹配但唉我不知道如何这样,任何想法?

uilabel ios autolayout

23
推荐指数
2
解决办法
6869
查看次数

不等式约束歧义

我在使用Autolayout和约束来调整UIView的大小时遇到​​了问题.我想改变原点(小于或等于原始)和宽度(大于或等于原始)但我得到了这个:不等式约束歧义

你有解决这个问题的想法吗?

谢谢

查看错误

约束错误

constraints objective-c ios autolayout ios7

23
推荐指数
3
解决办法
2万
查看次数

将所有子视图移动到容器视图,保持位置和约束

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

xcode cocoa-touch constraints xib autolayout

23
推荐指数
2
解决办法
4153
查看次数

UIScrollView +中心视图+ Ambigous Scrollable内容大小+许多iPhone大小

我有:

  • 应用程序,应该在横向和纵向模式下工作.
  • 在顶部查看全尺寸滚动视图.
  • 滚动视图内部的一些视图具有固定的宽度和高度.(增加了H和W约束)
  • 设置为在容器中以水平居中的方式查看滚动视图内部.(根据约束添加)

我在界面生成器"有不明确的可滚动内容宽度"中发出警告. 在此输入图像描述

我知道解决这个问题的唯一方法是设置尾随和前导约束.但是对于不同的iPhone(5.5",4.7",4"),我需要设置不同的尾随和前导约束.

如何消除此警告仍然具有固定W和H的所有iPhone尺寸的水平视图居中?

我创建Github repo来说明这个问题:ScrollViewAmbigous

这与UIScrollView Scrollable Content Size Ambiguity不重复 ,但它类似(虽然没有回答),但这个问题尤其与不同尺寸的iPhone有关.

interface-builder uiscrollview ios autolayout xcode6

23
推荐指数
2
解决办法
2万
查看次数

为什么viewdidlayoutsubviews会多次调用?

我在Swift上开发iOS通用应用程序,使用自动布局并仅支持肖像.

我发现UIViewController#viewdidlayoutsubviews多次被叫.相反,viewDidLoad只能在启动MyApp时调用一次UIViewController.

为什么要viewdidlayoutsubviews多次打电话?每个UIView(UIButtons,UITextFields等等)的约束将按顺序执行?

任何信息将不胜感激.

ios autolayout swift

23
推荐指数
1
解决办法
2万
查看次数

iOS 8自动高度单元在第一次加载时不正确的高度

我有一个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)

还有其他人经历过这个吗?

uitableview ios autolayout ios8

23
推荐指数
2
解决办法
9251
查看次数

在不同设备上校正图像和字体比例?

我有一个简单的视图与文本和图像.我在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截图.然后我将两个屏幕截图调整为相同的大小.然后我看到两个截图上的字体大小和图像尺寸都完全相同.这意味着在每个设备上,字体和图像必须具有不同的尺寸.我怎样才能做到这一点?

如何在不同的屏幕尺寸上实现该文本和图像具有相同的比例?天气应用程序如何做到这一点?

iphone objective-c ios autolayout swift

23
推荐指数
3
解决办法
8828
查看次数