如果通过 Interface Builder 添加,则无法修改 UIImageView 的框架

2024-04-07

我遇到了这个非常奇怪的问题,我无法修改 UIImageView 的框架。

我将其与这个非常简单的示例隔离开来。从默认的单视图应用程序 xcode 模板开始,我在 Interface Builder 中添加一个 UIImageView,将其链接到名为 testImage 的 ViewController 属性,然后在 ViewController.m 中添加:

-(void)viewDidAppear:(BOOL)animated{
    UIImageView* maskImage = [[UIImageView alloc] initWithFrame:self.testImage.frame];
    maskImage.image = self.testImage.image;
    maskImage.alpha = 0;
    [self.view addSubview:maskImage];
    self.testImage.frame = CGRectMake(10, 10, 10, 10);
}

它不起作用。测试图像完全保持在原来的位置。如果我不添加 maskImage 来查看,则该示例有效。而且,是的,我确信我没有用 maskImage 覆盖目的地。

如果我不使用 IB 来放置图像,而是使用:

self.testImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 100, 300, 300)];
self.testImage.image = [UIImage imageNamed:@"jim-105.png"];
[self.view addSubview:self.testImage];

在 viewDidLoad 中,一切都按预期工作。

我也尝试过将图像放置在 IB 中,然后在 viewDidLoad 中设置其属性,但效果相同。我一直在Xcode5中尝试这个。我无法在这里访问以前的 Xcode,并且我不确定这是预期的行为(如果是的话为什么)还是这是一个错误?


如果您使用自动布局,我期望您所描述的行为准确无误,其中尝试调整frame当重新应用约束时(这可能发生在最偶然的事件中,例如向主视图添加另一个视图),并且frame将被重新计算。如果您有一个带有约束的自动布局视图,要更改其大小,您需要更改其约束。

如果您想知道为什么以编程方式创建testImage按预期工作,这是因为默认情况下,以编程方式创建的视图具有translatesAutoresizingMaskIntoConstraints打开。因此,试图改变frame坚持。

如果您正在使用自动布局并想要更改frame,您可以通过添加来完成此操作IBOutletInterface Builder 中约束的参考。假设您的视图有顶部、前导、宽度和高度限制。然后您可以更改它的框架(在本例中,更改为CGRect(0, 100, 300, 200)) with:

self.imageViewLeadingConstraint.constant = 0;
self.imageViewTopConstraint.constant = 300.0;
self.imageViewWidthConstraint.constant = 300;
self.imageViewHeightConstraint.constant = 200;

显然,你需要这四个IBOutlet参考文献,但是一旦你这样做了,那就很容易了。

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

如果通过 Interface Builder 添加,则无法修改 UIImageView 的框架 的相关文章

  • 如何在iOS 11中向集合视图大标题导航栏添加刷新控件?

    根据 Apple 的说法 刷新控件应该是 iOS 11 中大标题导航栏的一部分 当我在故事板中为 UITableViewController 启用刷新控件时 刷新控件是导航栏的一部分 拉动刷新 我无法在故事板中为 UICollectionV
  • NSDateComponents 中的 sethours

    我正在尝试在 NSDateComponents 中设置小时 我编写了以下代码 NSCalendar calendar NSCalendar alloc initWithCalendarIdentifier NSGregorianCalend
  • 用强/弱自我打破保留周期

    我读过关于强 弱的帖子self打破保留周期 但我仍然对它们如何工作感到困惑 我理解使用 weak typeof self weakSelf self创建对自我的弱引用 但我对强引用感到困惑 据我了解 强引用是指对self这样它就不会在块结束
  • UITableView 的 reloadRowsAtIndexPaths: (NSArray *) indexPaths 无法导致重新加载,除非您调用它两次?

    我有一个 UITableViewController 管理 iPad 应用程序中的 UITableView 对象 表格视图与相当复杂的其他对象群联系在一起 当我要求它重新加载行时遇到问题 如下所示 indexPath is an NSInd
  • 在 IOS 应用程序中遇到奇怪的错误:“DOMException 105”。寻找有关如何定位代码中的错误的指导

    无法在任何地方找到任何对此错误的引用 它每次都会发生在同一点 就像我单击 UITableView 行元素一样 下面是堆栈跟踪 有人可以提供有关问题可能是什么和 或如何找到错误的任何建议吗 谢谢你 2016 11 04 10 12 56 09
  • 如何对其中包含自定义对象的 NSMutableArray 进行排序?

    我想做的事情看起来很简单 但我在网上找不到任何答案 我有一个NSMutableArray对象 假设它们是 Person 对象 我想排序NSMutableArray通过 Person birthDate 这是一个NSDate 我认为这与这个方
  • Swift 2.0 中的协议扩展方法调度

    我面临有关协议方法调度的问题 我有一个类层次结构 如下所示 protocol E func test extension E func test print jello class A E class B A func test print
  • 将文件保存到 icloud 驱动器

    我正在尝试将文件保存到 icloud 驱动器 我要使用简单版本 不让用户选择保存文件的位置 我只是将其保存在 icloud 驱动器的根目录中 这是我正在使用的代码 func exportToFiles for page in pages l
  • 如何在 Flutter 中为 Button 添加渐变?

    有没有办法改变ElevatedButton背景颜色渐变 如果没有一些小瑕疵或问题 例如缺少涟漪效应 不需要的边框 不尊重主题的内容 上述所有解决方案都无法真正发挥作用minWidth对于按钮 The 下面的解决方案没有上述问题 关键部分是使
  • 如何将故事板连接到视图控制器

    在新的 xcode 5 中 如何在界面生成器中使用下拉菜单将故事板视图控制器连接到类 现在这是如何完成的 除非我误解了你的要求 否则它仍然存在 以下是将自定义视图控制器类分配给视图控制器的步骤 在左侧场景列表中选择您的视图控制器 选择右侧的
  • 操作按钮未出现在通知 iOS 10 中

    我在我的应用程序中使用本地推送通知 在 iOS 10 中为通知添加操作按钮时 它不会出现在通知下方 通知正在显示 但通知底部缺少操作按钮 下面给出了 appdelegate 代码 import UIKit import CoreData i
  • iOS UITableViewCellAccessoryCheckmark 在每次滚动时可见

    我有一个列表 我将其用作复选框 我已启用或禁用选择行上的复选标记 但是当我滚动列表时 它会在每 10 行之后标记行 void tableView UITableView tableView didSelectRowAtIndexPath N
  • 从 NSString 获取子字符串,直到到达特定单词

    假设我有这个NSString Country Address Tel number 我该如何获取之前的子字符串Tel 国家地址 然后我该如何获取后面的子字符串Tel 数字 使用 NSScanner NSString string Count
  • 如何防止 iPhone 4 在添加到主屏幕时截断我的标题?

    我的网页标题很长 当添加到 iPhone 旧版本的主屏幕时 整个标题在确认对话框中可见 当我添加到 iPhone 4 的主屏幕时 标题在第 12 个符号之后被切断 有没有办法阻止这种剪切 让 iPhone 默认显示完整标题 显然会有一个无证
  • ios7 绘图时出现延迟

    我有一个应用程序 在其中我正在视图上绘制一些草图 到目前为止 在我安装之前它运行良好ios7 我的应用程序使用触摸移动方法来识别运动的变化 但是当我画一条线时 触摸方法被调用 但线不会更新 直到我触摸结束ios7 所以画起来有一点点滞后 它
  • iOS:如何在 UITabBarItem 中添加下划线

    我正在使用一个应用程序 我需要在其中添加下划线UITabbarItem 所以我想在所选下添加下划线UITabbarItem在默认情况下UITabbarcontroller of iOS 我已经创建了子类UITabbarcontroller但
  • stringFromDate 始终为 NIL

    我知道这是一个重复的问题 但是在 stackoverflow 和 google 上搜索了许多类似的问题后 没有一个解决方案对我有用 我正在尝试将从数据库收到的日期转换为字符串格式以在 iPhone 应用程序中显示 我正在按以下方式将日期转换
  • 如何使用 Expo 播放 Youtube 视频

    我正在尝试使用反应本机 YouTube 组件 https github com inProgress team react native youtube在我的世博项目中 但是 我无法让它发挥作用 到目前为止 我所拥有的只是带有红色边框的黑屏
  • NativeScript:禁用 iOS WebView 缩放控件的方法?

    我正在尝试找出一种方法来防止用户通过捏合手势和双击来放大和缩小 iOS WebView tns ios 3 4 1 本质上禁用所有缩放 就像苹果之前使用的 html 元标记一样让用户决定是否要使用 iOS 10 及更高版本进行缩放 我找到了
  • 制作一个固定大小的 UIView,如 UISwitch(使用 IBDesignable)

    当我使用时本指南 http iphonedev tv blog 2014 12 15 create an ibdesignable uiview subclass with code from an xib file in xcode 6要

随机推荐