标签: ios-autolayout

动态创建UI元素时如何设置scrollview高度

在故事板上,在视图控制器内我有一个滚动视图。导航栏和堆栈视图嵌入在滚动视图内。我以编程方式在堆栈视图中添加了一些 UI 元素。

通过故事板,滚动视图的约束设置为与安全区域相同 - 顶部、底部、前导、尾随和宽度。

导航栏约束 - 尾随、前导、顶部、宽度与超级视图相同。

Stackview 约束 - 尾随、前导、底部、宽度与 superview 相同。

导航栏的底部与 stackview 的顶部相同,因此它们是一个在另一个之下。

设置这些约束后,滚动视图出现错误 - 需要约束:Y 位置或高度

由于 UI 元素是动态添加到 stackview 中的,因此如何设置 Storyboard 中的高度?有一个更好的方法吗?

我尝试了“添加缺少的约束”选项,它为堆栈视图添加了恒定的高度,但这并不适用于所有设备。由于我是 iOS 应用程序开发的新手,因此非常感谢任何帮助。谢谢。

uiscrollview ios swift ios-autolayout uistackview

5
推荐指数
1
解决办法
3805
查看次数

使用AutoLayout将UITextView扩展到指定高度后重新启用它

我知道有一些类似的帖子,但它们似乎对我不起作用.

我有一个uitextview,我想表现得类似于messenging应用程序.

我使用autolayouts和[textview setScrollEnabled:NO]来允许uitextview在键盘上方动态扩展.当然,它会一直延伸到屏幕顶部.当它停止增长时,你无法看到任何其他文字.

我试图找到它在textViewDidChange内停止增长的高度并调用[textView setScrollEnabled:YES],但它在缩小之前缩小了初始大小.

如何在滚动到达某个高度或不再生长时启用滚动?

objective-c uitextview xcode6 ios8 ios-autolayout

4
推荐指数
1
解决办法
2183
查看次数

当UIView获得框架时,Autolayout会检测到

我有UIView自动布局约束.我用框架创建它CGRectZero.所以我不是真正的大小.这将取决于superview.

但我想知道我的视图何时获得一个可用于计算的框架.

ios autolayout nsautolayout ios7 ios-autolayout

4
推荐指数
1
解决办法
5557
查看次数

以编程方式将自动布局约束添加到导航控制器

我正在尝试为我在导航栏上添加的UI标签添加约束.UI标签显示正在运行的计时器

这是我的代码,

self.label = [[UILabel alloc] initWithFrame:CGRectMake(550, 15, 150, 14)];
self.label.text = @"Label";
[self.label setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.navigationController.navigationBar addSubview:self.label];

[self.navigationController.navigationBar addConstraint:[NSLayoutConstraint constraintWithItem:self.label
                                                       attribute:NSLayoutAttributeTrailing
                                                       relatedBy:NSLayoutRelationEqual
                                                          toItem:self.navigationController.navigationBar
                                                       attribute:NSLayoutAttributeTrailing
                                                      multiplier:1.0f
                                                        constant:-20.0f]];
Run Code Online (Sandbox Code Playgroud)

但是当我运行应用程序时,我收到错误"无法修改由控制器管理的UINavigationBar的约束".

如何添加此约束?

ios autolayout ios-autolayout

4
推荐指数
1
解决办法
9783
查看次数

所有uitableviewcells在iOS 9上都成为一条高度

我有一个带有几个UITableView控制器的应用程序.在iOS 8.x上运行,每个表中所有单元格的高度将调整大小以适合单元格的内容(所有单元格都只包含带有纯文本的UILabel).现在,当在iOS 9上运行时,每个表上的每个单元格只有一行高.这适用于动态和静态表.我已经搜索了UIKit差异文档并进行了大量搜索,但是我找不到合适的组合来获得除了所有表格中所有单元格中一行高度以外的任何东西.

uitableview ios-autolayout

4
推荐指数
1
解决办法
2025
查看次数

如何在自动布局约束中使项目全宽?

我正在尝试在ios 9故事板中制作一个全宽按钮,并且我正在尝试创建宽度自动约束,但宽度约束似乎只需要一个精确的静态数字.如何使项目全宽.

另外,如果我想说一个imageview是全高和可调宽度来保持它的宽高比 - 或者是一个适合填充的大小,我将如何使用故事板中的自动布局约束来做到这一点.

我应该在视图控制器中以编程方式执行此操作吗?

xcode uistoryboard autolayout ios-autolayout ios9

4
推荐指数
1
解决办法
9011
查看次数

how to insert images in collection view cell

I want to insert three images in collection view cell, 3 images. One image for each cell.Only one section. But when the simulator shows black screen, no any images. Here is part of my code:

import Foundation
import UIKit

class CatImagesViewController:UIViewController,UICollectionViewDataSource,UICollectionViewDelegate
{
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

    return 3
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    let con = CatService(test:"test")

    let temp = NSUserDefaults() …
Run Code Online (Sandbox Code Playgroud)

ios swift ios-autolayout

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

仅使用后退按钮和透明背景导航

我曾尝试实现嵌入我的View Controller的导航控制器.它按预期工作.

但我的要求略有不同,只需要一个后退按钮,并且已经在所有屏幕中都有一个带有徽标图像背景的顶部横幅.因此,如果我尝试实现后退按钮,它会占用导航栏的空间,其中包含徽标/顶部横幅.

有没有办法克服这种情况.

uinavigationcontroller ios swift ios-autolayout

4
推荐指数
1
解决办法
1920
查看次数

多行 UILabel 与固有内容大小的 UILabel 宽度相同

我正在尝试使用自动布局对齐两个 UILabel,其中第一个标签没有设置宽度,但使用内部内容大小,第二个标签应与第一个标签的宽度相同,将文本换行到新行。

理想情况下,第二个标签应该将数字线设置为0与动态类型一起使用,但我2暂时将其设置为,甚至给了它一个特定的高度。然而,当我尝试对齐equal widths或 时trailing,内在内容大小标签扩展到多行标签的宽度,就好像它都在一行上一样(见下图)。

我追求的是: 我追求的效果

我所看到的: 我得到的效果

有什么方法可以让我在不指定第一个标签的宽度的情况下实现我想要的?我希望它扩展内容以考虑动态类型,并且第二个标签具有相同的宽度并将所有文本换行到新行。

ios autolayout ios-autolayout intrinsic-content-size

4
推荐指数
1
解决办法
2967
查看次数

使用 adjustsFontSizeToFitWidth 时 UILabel 文本的按钮被切断

当我的 UILabel 的字体大小被调整以适应标签的宽度时,文本的底部被切断。这是调试视图的屏幕截图:

在此处输入图片说明

UILabel 具有以下特点:

  • 系统字体(半粗体,36pt)
  • 行数= 1
  • 基线调整= .alignCenters
  • translatesAutoresizingMaskIntoConstraints = false
  • auto-layout 约束:top、left、right pinned 是 pinned,没有底部或高度约束
  • AdjustsFontSizeToFitWidth = true, minimumScaleFactor = 0.1
  • 默认无文本,初始化后给出文本
  • lineBreakMode = .byWordWrapping

附加元素:

  • 这仅在字体大小确实减小时发生。如果文本较短且适合原始字体大小,则不会被截断。
  • 如果我手动更改字体大小以使文本适合,它不会被切断。只有当它自动调整到该字体大小时才会发生。

不起作用的事情:

  • 使用.attributedText而不是.text属性
  • 调用 sizeToFits、setNeedsLayout()/layoutIfNeeded()
  • 默认为标签设置长文本
  • 尝试基线调整的所有设置(设置为 .none 有效,请参阅答案)

(在我输入这个问题时,我再次尝试更改基线调整设置以确认它不起作用,这次它起作用了。请参阅答案。)

ios autolayout swift ios-autolayout

4
推荐指数
1
解决办法
3842
查看次数