iOS 8 CGAffineTransformMakeScale + 自动布局不再工作

2024-01-20

似乎有一些帖子与我的问题相关,但似乎没有任何帮助。使用自动布局时如何调整 CALayer 的锚点? https://stackoverflow.com/questions/12943107/how-do-i-adjust-the-anchor-point-of-a-calayer-when-auto-layout-is-being-used

我有我的应用程序的缩放预览(作为教程),标准视图(和视图控制器)缩小并显示在另一个视图上。

=============
=           =
= --------- =
= -       - =
= -Preview- =
= -       - =
= --------- =
=    View   =
=============

为此,我使用以下代码:

previewViewController.view.transform = CGAffineTransformMakeScale(scale*2, scale*2);

我还需要这个缩放视图来与教程视图控制器保持一致。为此,我创建了一个“占位符视图”,我希望缩放视图的大小匹配。

为此,我使用:

-(void)setConstraintsForPreviewViewController
{
    NSArray *attributes = @[@(NSLayoutAttributeLeftMargin), @(NSLayoutAttributeRightMargin), @(NSLayoutAttributeTopMargin), @(NSLayoutAttributeBottomMargin)];
    [attributes enumerateObjectsUsingBlock:^(NSNumber *obj, NSUInteger idx, BOOL *stop) {
        NSLayoutAttribute attribute = [obj integerValue];
        [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.viewControllerPlaceholderView
                                                              attribute:attribute
                                                              relatedBy:NSLayoutRelationEqual
                                                                 toItem:previewViewController.view
                                                              attribute:attribute
                                                             multiplier:1
                                                               constant:0]];
    }];
}

这在 iOS 7 中运行良好,但使用 XCode 6 和 iOS 8 构建时似乎会出现问题。看起来它现在首先设置约束(调整占位符),然后缩小它(导致预览太小)。

Code:

-(void)setupPreviewViewController
{
    float scale = [self scale];
    previewViewController = [self.storyboard instantiateViewControllerWithIdentifier:[PLACEHOLDER_VIEWCONTROLLER_NAMES objectAtIndex:self.identifier]];

    previewViewController.view.transform = CGAffineTransformMakeScale(scale*2, scale*2);

    [self.view addSubview:previewViewController.view];
    previewViewController.view.translatesAutoresizingMaskIntoConstraints = NO;

    [self addChildViewController:previewViewController];

    [self setConstraintsForPreviewViewController];

    self.viewControllerPlaceholderToImageViewSpaceConstraint.constant = ([self hasNavigationBar] ? (44 * scale * 2) : -22 * scale * 2);

    self.viewControllerPlaceholderToBottomSpaceConstraint.constant = IS_WIDESCREEN ? 160 : 131;

    previewViewController.view.userInteractionEnabled = NO;

    [self.view setNeedsLayout];
}

对我来说这似乎是 iOS 8 的一个错误。我遇到过同样的问题。我的解决方案是禁用预览的自动布局并诉诸 autoresizingMask。

preview.translatesAutoresizingMaskIntoConstraints = YES;
preview.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
preview.frame = view.bounds;

但我的预览视图是一个普通的 UIImageView。我不知道它如何与一些复杂的基于自动布局的预览视图一起使用。

我的设置与你的非常相似,我也在顶部使用了占位符 VC,但它也是使用 autoresizingMask 构建的,似乎更容易将东西垂直居中。

如果您在预览视图中使用任何约束并遇到问题,那么我会尝试将预览包装在另一个 UIView 中,看看它是否有效。[view (autoresizingMask, custom frame, scaled)] -> [view (autoresizingMask = Flexible W+H)] -> [Preview (Autolayout)]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 8 CGAffineTransformMakeScale + 自动布局不再工作 的相关文章

  • UITableView 无法一直滚动到底部[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我只是好奇 我做了一些UITable
  • 如何在 Xcode 4.2 中创建 Shell 脚本目标?

    我想知道是否有人知道 XCode 4 1 如何创建 shell 脚本 该选项不存在 但在最新版本中可能会被称为其他名称 塔 在导航器中选择您的项目 单击 添加目标 为空目标选择 聚合 添加构建阶段 gt 添加运行脚本 单击构建阶段并编辑运行
  • Objective-C++ 中的 boost::shared_ptr

    这是对我之前提出的一个问题的更好理解 我有以下 Objective C 对象 interface OCPP MyCppobj cppobj end implementation OCPP OCPP init cppobj new MyCpp
  • 使用 iPhone 控制蓝牙音频设备

    我正在寻找为 iPhone 编写应用程序 它将能够控制汽车中的收音机和 CD 播放器 收音机和播放器具有可用的蓝牙连接 我开始这个问题是为了获得这个地方所需的所有信息 我有几个问题 但如果您发现任何我没有要求的对我开始开发此应用程序不重要的
  • 通过应用程序组在应用程序之间通信和保存数据

    iOS 8 昨天发布了一个有关应用程序组的新 API 以前在应用程序之间共享数据和通信有点混乱 我相信这正是应用程序组旨在纠正的问题 在我的应用程序中 我启用了应用程序组并添加了一个新组 但我找不到任何有关如何使用它的文档 文档和 API
  • 返回一个dispatch_async获取的变量[重复]

    这个问题在这里已经有答案了 基本上 一个方法需要返回一个在dispatch async中获取的NSDictionary 这是我尝试过的 NSDictionary fetchNSDictionary dispatch queue t Queu
  • iOS:我如何知道某个属性是否符合 KVO 标准?

    In the 键值观察编程指南 https developer apple com library archive documentation Cocoa Conceptual KeyValueObserving KeyValueObser
  • 禁用 iPhone 4S / 新 iPad 键盘上的听写按钮

    我们的应用程序是一个医疗保健应用程序 我们的应用程序中有一个符合 HIPAA 标准的语音识别器 所有听写都可以通过它进行 医院不希望医生意外开始与不符合 HIPAA 标准的 Nuance Dragon 服务器进行对话 因此 我正在寻找可以抑
  • 在 Swift 中使用 commitEditingStyle 动态删除 UITable 部分

    我正在处理一个无法解决的问题 我有一个来自客户数据库数组的名称表 每个客户在其他数据成员中都有一个名称属性 我可以成功删除某个部分中的行 但我不能删除该部分 当该部分中的最后一行被删除时 该部分必须消失 I got NSInternalIn
  • 显示器连接或断开连接时的通知

    我正在开发一个 OS X 应用程序 该应用程序在所有连接的显示器的所有可用空间上显示自定义窗口 我可以通过调用 NSScreen Screens 获取可用显示对象的数组 我目前缺少的是一种判断用户是否将显示器连接到系统或从系统断开屏幕的方法
  • 如何将 UIImageView 裁剪为自定义形状

    用户是否可以在该位周围画一条虚线 圆圈 UIImageView他们希望裁剪到 然后为UIImageView调整大小到这些点 这有点像 Photoshop 中的套索 选取框效果 更新 从 iOS 8 x 开始 UIImageView 提供了m
  • 如何修复 ReactiveCocoa(带有 CocoaPods)的安装?

    这里是新手 尝试将 ReactiveCocoa 2 2 4 和 CocoaPods 安装到项目中 但在运行时遇到错误 我用过github 上的这个 podspec https github com CocoaPods Specs blob
  • NSDateFormatter:根据 currentLocale 的日期,不包含年份

    这不会太难吧 我想显示不带年份的日期 例如 8 月 2 日 美国 或 02 08 德国 它也必须适用于许多其他语言环境 到目前为止 我唯一的想法是对年份进行正常格式 然后从生成的字符串中删除年份部分 我认为你需要看一下 NSString d
  • UITextView:内存使用量巨大

    我在 UITextView 中遇到了内存使用过多的问题 我正在将 50Kb ascii 文本文件加载到 NSString 中 并将其分配给应用程序中空 UITextView 组件的 text 属性 这立即使我的内存占用量增加了 100Mb
  • 由于 2.23 导致 iOS 应用程序被拒绝 - iOS 数据存储指南

    以下是 Apple 关于拒绝的消息 2 23 应用程序必须遵循 iOS 数据存储指南 否则将被拒绝 2 23 详情 在启动和内容下载时 您的应用程序会存储 6 5 MB 这并不意味着 遵守 iOS 数据存储指南 下一步 请验证只有用户使用您
  • Objective C (iphone) 关于发布的问题

    如果我创建一个视图 并将其添加为子视图并将其添加到数组中 是否必须释放它两次 UIView cat UIView alloc initWithFrame someFrame self view addSubview cat self ani
  • UISlider不会自动重绘

    我的应用程序上有一个 UISlider 有时我不仅需要更新它的值 还需要更新它的minimumValue 值已更改 但如果我调用 setValue 方法或为滑块分配新值 它会具有新值 但滑块不会将自身重新绘制到该新值应有的位置 我怎样才能重
  • 如何检索 iPhone 的区域设置

    我用谷歌搜索过它 但令我有点惊讶的是我找不到它 我只想访问设备配置的区域设置 我试图找到如何列出所有系统属性 以防我能在那里找到区域设置 但甚至找不到如何做到这一点 我知道 认为 我之前检索过系统属性 但我也记得在谷歌搜索时找到该信息并不容
  • 如何为 Nslocal 通知设置自定义重复间隔......?

    我是 iphone 开发新手 我正在尝试在我的项目中使用 NslocalNotification 我需要每 2 小时或每两天或每两个月等给出提醒 目前我正在使用 NslocalNotification 重复间隔 但它仅适用于使用 Ncale
  • 从plist文件中读取数据

    我正在尝试为我的 iPhone 应用程序实现保存状态 我有一个名为 SaveData plist 的 plist 文件 我可以通过以下方式读取它 NSString pListPath2 bundle pathForResource Save

随机推荐

  • Web Workers 是沙箱不受信任的 JavaScript 代码的安全方法吗

    我想知道网络工作者是否可以安全地沙箱不受信任的 JavaScript 代码 举例来说 在绘图应用程序的上下文中 开发人员可以实现新的绘图工具 您可以将他们的代码放入 webworker 中 并且每当用户单击画布时 向他们发送一条包含光标位置
  • Python argparse:列出用法中的各个选择

    我有一个需要多个参数的程序 例如 breakfast py customer vikings eggs sausage bacon 其中 鸡蛋 香肠 和 培根 可以从特定选项列表中指定 现在我喜欢的输出breakfast py help看起
  • Azure Cosmos DB 多模型意味着什么?

    看着新的 Azure cosmos 数据库 我对它的多模型性质有点困惑 具体来说 是不是意味着 a 可以同时以多种方式查询相同的底层数据库 存储 以便我可以针对相同的集合使用 gremlin 图形查询和 mongodb api or b 这
  • 网页到印刷媒体——解决方案?

    我一直是 MediaWiki 和类似的基于 wiki 的文本编辑器的忠实粉丝 我喜欢快速添加文本 协作和共享的功能 然而 仍然需要格式良好的打印输出 像页眉和页脚 表达我想要它们表达的内容 分页符 页边距等 我见过的大多数解决方案都涉及到某
  • 在 SceneKit 中使用 Metal 着色器

    我想用一个Metal着色器将卡通 单元着色应用于场景中使用的材质 我试图实现的着色器是苹果自己的AAPLCelShader发现于金属着色器展示柜 https developer apple com library ios samplecod
  • 如何动态更改结构体的 json 标签?

    我有以下内容 package main import encoding json fmt os reflect type User struct ID int64 json id Name string json first want to
  • 我应该如何设置CLASSPATH?

    我之前这样做过 CLASSPATH home phenies jdk1 6 0 17 lib tools jar home phenies jdk1 6 0 17 lib dt jar 但今天一篇文章说我应该这样做 CLASSPATH ho
  • Pandas:将 group-key 作为 groupby.apply 中函数的参数

    我正在处理数据集df cities包含以下列 city name country name population language 我有以下函数可以根据国家 地区是否在某个列表中对表进行排序 special countries Morocc
  • 使用 ifelse 转换 R 中的列

    我有一个带有一列数字的数据框 在单独的列中 我想根据数字打印该数字是 小于 10 10 到 20 之间 还是 20 到 30 之间 到目前为止 我已经生成了这段代码 但到目前为止还不起作用 任何人都可以建议我如何修改它以使其起作用吗 cre
  • 添加 AUC 作为 keras 的损失函数

    有没有人有幸使用 Theano 为 Keras 编写自定义 AUC 损失函数 文档在这里 http keras io objectives http keras io objectives 示例代码在这里 https github com
  • 创建并写入具有“执行”权限的文件?

    我正在写一个bash带飞镖的脚本 下面的代码创建一个文件 但该文件没有 执行 权限 所以我无法通过执行 ex sh new File ex sh writeAsStringSync script str 也许 我需要设置FileStat h
  • 无法在未调用 Looper.prepare() 的线程内创建处理程序

    以下异常是什么意思 我该如何修复它 这是代码 Toast toast Toast makeText mContext Something Toast LENGTH SHORT 这是例外 java lang RuntimeException
  • 正则表达式更改特定字符串[重复]

    这个问题在这里已经有答案了 我正在从事一个翻译项目 当用户输入时我必须更改一些单词 例如 亚拉玛 gt 亚拉玛 亚拉马克 gt 亚拉马克 卡尔马迪 gt 卡马迪 萨拉马迪 gt 萨拉马迪 我的代码目前运行良好 但我有一个问题 如果我只输入
  • 从简单的 XML 文件到 XForms 的 XSL 转换并应用 CSS

    我正在将一些简单的 XML 文档转换为 XForms 并尝试向最终结果添加一些样式 我正在使用XSLT表格实现 我指向本地 CSS 文件 Twitter 的引导程序 所以 XML 文件看起来像这样
  • 为什么 new HashMap<> 在 JDK 1.6 中会产生错误,而在 1.7 中不会

    我注意到以下代码在使用 java 规范 1 7 的 eclipse 中编译时可以工作 但不能在 1 6 下工作 HashMap
  • 如何创建类的实例并注入服务?

    新的 aspnet 具有内置依赖注入 启动类实例接收服务 控制器 视图组件 有什么方法可以让我创建我的类的对象并使用 aspnet 功能传递服务吗 就像是 WebApplicationClassesActivator Create type
  • 无法在 Angular 9 中进行默认导入

    我变了tsconfig json通过添加此属性 esModuleInterop true allowSyntheticDefaultImports true 为了能够导入 npm 包import as ms from ms 但我仍然收到此错
  • 如何从 .sikuli 文件夹中检索代码?

    当我打开一个 sikuli文件夹 里面只有图像 所以我想知道是否有任何方法可以在不使用 Sikuli IDE 的情况下查看或检索 Sikuli 代码 我可以从 sikuli文件夹 根据文档 http doc sikuli org devs
  • 没有事务的 JPA 更新查询 - 事务是强制性的吗?

    我正在尝试使用 JPA 通过本机查询进行插入 但我不想创建事务 Query query em createNativeQuery INSERT INTO person id firstname lastname VALUES 1 Ronni
  • iOS 8 CGAffineTransformMakeScale + 自动布局不再工作

    似乎有一些帖子与我的问题相关 但似乎没有任何帮助 使用自动布局时如何调整 CALayer 的锚点 https stackoverflow com questions 12943107 how do i adjust the anchor p