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 + 自动布局不再工作 的相关文章

  • 从应用程序内发送电子邮件中的图像和文本

    如何从我的应用程序内通过电子邮件发送图像和文本 表格数据形式 请大家帮忙并提出建议 谢谢 void sendMailWithImage UIImage image if MFMailComposeViewController canSend
  • 如何确定自定义 UINavigationItem.titleView 的大小/框架?

    创建自定义视图并将其分配给 navigationItem titleView 属性后 它的显示如下 自定义视图填充两个按钮之间的空间 因此 自定义视图并不以导航栏为中心 如何确定 titleView 属性中视图的框架 我想在导航栏中居中放置
  • iOS通过AVAssetWriter反转音频

    我正在尝试使用 AVAsset 和 AVAssetWriter 在 iOS 中反转音频 以下代码可以正常工作 但输出文件比输入文件短 例如 输入文件的持续时间为 1 59 但输出文件的持续时间为 1 50 且音频内容相同 void reve
  • iOS:GMail API - 通过电子邮件发送附件

    我能够成功发送没有附件的电子邮件 但是 当我尝试使用 GTLUploadParamaters 上传附件时 出现 501 错误 我尝试添加照片库中附件的 NSData 以及仅发送图像的 URL 在这两种情况下我都得到了同样的错误 Create
  • MIDI 文件解析

    我们如何使用 Objective C 进行 MIDI 文件解析 在Java中用于MIDI文件解析的包名为javax sound midi Objective c 有什么东西吗 如果你们中有人回复的话将会有很大的帮助 提前致谢 您可以使用 C
  • 如何执行 UIAlertAction 的处理程序?

    我正在尝试编写一个帮助程序类以允许我们的应用程序支持两者UIAlertAction and UIAlertView 然而 当写alertView clickedButtonAtIndex 方法为UIAlertViewDelegate 我遇到
  • Objective c:如何只删除目录下的所有文件但保留目录本身

    我发现下面的代码可以删除objective c中的文件 但我只想删除目录下的所有文件Caches并保留目录Caches itself 有人可以建议这样做的方法吗 Thanks NSFileManager filemgr filemgr NS
  • iOS:保持应用程序在后台运行

    如何让我的应用程序在后台运行 我需要越狱我的 iPhone 才能执行此操作吗 我只需要这个应用程序每隔设定的时间间隔从互联网上检查一些内容 并在需要时发出通知 以供我自己使用 是的 不需要越狱 查看本文档的 实现长时间运行的后台任务 部分A
  • 如何创建一个 NSMutableArray 并为其分配一个特定的对象?

    我刚刚开始接触 Obj C 并且希望创建一个 MKAnnotations 数组 我已经创建了名为的 MKAnnotation 类TruckLocation其中包含名称 描述 纬度和经度 这是到目前为止我所拥有的数组 NSMutableArr
  • 如何自定义 NSSlider

    我正在尝试在 Cocoa 中实现一个具有 5 个值的自定义滑块 查看我的演示项目 可以在此处下载 http s000 tinyupload com index php file id 07311576247413689572 http s0
  • 在 UITableView 中设置滚动位置

    我有一个应用程序 其工作方式与 iPhone 的 联系人 应用程序的工作方式有些相似 当我们添加新的联系人时 用户将被定向到包含联系人信息的仅查看屏幕 如果我们从导航栏中选择 所有联系人 用户将导航到查看最近添加的联系人的所有联系人列表 我
  • 如何改进 iOS 中的 TWTweetComposeViewController 代码?

    我已经实现了以下代码来进行 Twitter 共享 在我的代码中 我尝试测试 iOS 5 如果这不起作用 我会回到使用 ShareKit 的 Twitter 代码进行共享的旧方式 我向同事展示了代码 他建议我的代码可能有缺陷 我需要做两件事
  • 自动布局:Y 位置为两个值中的最大值

    我有一个按钮 play Button 和两个 UIView myView 1 和 myView 2 它们的位置在执行过程中可能会发生变化 我希望 playButton 的顶部比 UIView 1 的底部或 UIView 2 的底部低 10
  • 在 UITableviewCell 高度动画的同时动画 CALayer 阴影

    我有一个 UITableView 我正在尝试使用它来展开和折叠beginUpdates and endUpdates方法并在发生时显示阴影 在我的自定义 UITableViewCell 中 我有一个图层 我为其创建阴影layoutSubvi
  • 从 Plist 中存储和检索 [重复]

    这个问题在这里已经有答案了 可能的重复 iOS 在 plist 文件中存储两个 NSMutableArray https stackoverflow com questions 6070568 ios store two nsmutable
  • 使用 Objective-C 在 iPhone 应用程序中显示或隐藏 UIButton

    我在用UITextView编辑文本 我想用两个UIButtons编辑并保存 最初我想显示编辑UIButton 当用户单击编辑时我想显示保存UIButton 当内容成功保存后 我不想再显示保存按钮 我是一名 C 编码员 在 C 中我曾经这样做
  • 使用 Push Transition 效果更改 RootViewcontroller

    在我的iOS应用程序中 我需要更改应用程序之间窗口的rootviewController 因此 当我动态更改我的rootviewcontroller时 它会在更改之前轻拂视图 但我想要的是在更改rootviewcontroller时提供平滑
  • 使用 UIImagePickerController 的应用程序在拍照后选择“使用照片”时冻结

    我现在正在开发一个简单的照片和视频捕获应用程序 该应用程序成功地允许用户按下按钮即可拍摄照片或视频 但是 一旦您完成拍摄照片或视频 它就会提供 2 个选项 重新拍摄 和 使用照片 或 使用视频 具体取决于您使用的选项 如果用户点击 重新拍摄
  • 从 NSError 返回 NSString

    我正在使用NSURLRequest我的 iPhone 应用程序中的类 调用它的方法返回一个NSString这对于连接正常时非常有用 但问题是我需要将 NSError 转换为 NSString 以便我可以将其返回或运行一些if 对此的声明 有
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档

随机推荐

  • 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