- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有人遇到过在 iPhone X、Xs 上以编程方式加载图像时渲染变大的问题?
如果我在 Storyboard 中添加图像,它会正确调整大小,但是如果我以编程方式加载它,它会显得更大。我正在使用 Xcode 10.1。我已经尝试了 launch.storyboard 和启动图像来验证我是否正确访问了 iPhone X、Xs。
图像在 XsMax 和 XR 上正确加载。我知道 X,Xs 以不同方式呈现像素。这是单张图片,我没有使用@2x、@3x 等...
如果我在 Storyboard View 中放置一个 UIImageView 元素,并且它的框架矩形是 (3,95) 和 (130x253),图像在 Storyboard和我运行模拟器时看起来是正确的。如果我加载相同的图像但以编程方式执行,例如:
UIImageView *dot =[[UIImageView alloc] initWithFrame:CGRectMake(3,95,130,253)];
dot.image=[UIImage imageNamed:@"apple.png"];
[TestView addSubview:dot];
以编程方式显示的 UIImageView 看起来比 130x253 大。也许大 1/3?
谢谢
最佳答案
这是一个 x-y 问题:您错误地识别了问题。您在代码中添加的 ImageView 在所有设备上始终显示相同的大小。问题是其他 ImageView ,即您通过 Storyboard添加的 ImageView :那个 是在不同设备上更改大小的 ImageView 。原因是:这就是你告诉它要做的,你的自动调整大小设置,看起来像这样(我直接从你发布的项目中拿来让我看):
我将分两个阶段证明这一点。首先,我们只讨论在代码中添加的 ImageView 。这是我的科学测试代码(它在 Swift 中,但我相信你可以阅读它):
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
for i in stride(from: 0, to: 500, by: 100) {
let v = UIView(frame:CGRect(
x: CGFloat(i), y: 20, width: 10, height: 50))
v.backgroundColor = .black
self.view.addSubview(v)
}
let im = UIImage(named:"bullwinkle2.jpg")!
let iv = UIImageView(frame:CGRect(
x: 0, y: 50, width: im.size.width, height: im.size.height))
iv.image = im
self.view.addSubview(iv)
}
}
你看到我在做什么了吗?首先,我用间隔 100 像素的黑色 subview 构建了一种“标尺”。然后我创建 ImageView 并添加它,指定图像的宽度和高度。
这是它在 iPhone 5s 模拟器上的样子:
这是它在 iPhone X 模拟器上的样子:
如您所见,它们都显示相同尺寸的图像:图像的宽度恰好位于两个设备上的第三个标记处(图像必须恰好为 200 像素宽)。
好的,进入第二阶段。现在,我将在 Storyboard中添加一个 ImageView ,在水平和垂直方向上使用内部带有 Spring 的自动调整大小设置:
现在我将在 iPhone 8 模拟器上再次运行相同的代码:
这两个图像看起来大小相同,因为我在为 iPhone 8 调整 View 大小时在 Storyboard 中设计了界面。
好的,但现在让我们在 iPhone 5s 模拟器上再次运行:
啊哈!由于自动调整大小设置, Storyboard图像较小。所以你看,并不是代码图像太大了;而是因为代码图像太大了。这是 Storyboard图像有时太小了。
最后说明:您的最终目标是在代码中创建与从 Storyboard中输出的 ImageView 大小相同的 ImageView 。但是 that 并不总是有效的原因是您将该代码放入 viewDidLoad
中,这太早了。在自动调整大小生效之前,您不知道 Storyboard ImageView 的大小,这意味着必须调用 viewDidLayoutSubviews
。这比 viewDidLoad
晚发生。
关于ios - 在 iPhone X、Xs 上以编程方式加载时,图像会变大吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53898893/
“用 Haskell 进行函数式思考”中的练习之一是使用融合定律使程序更加高效。我在尝试复制答案时遇到了一些麻烦。 部分计算要求您将 maximum (xs++ map (x+) xs) 转换为 ma
我正在使用 XML 规范,它定义了一个“类型”“日期”,即: date: A union of xs:date, xs:gYearMonth, xs:gYear 以上数据类型来自W3C XML Sch
我很好奇替换是否正确 ... ... 与 ... ... 用javascript? 我所需要的只是隐藏第二个 div 并正确地通过 javascript 显示第一个 div 的 100%。实际完成的操
我有以下定义 Inductive subseq : list nat -> list nat -> Prop := | empty_subseq : subseq [] [] | add_right
可以在 xs:sequence 中使用 xs:choice 元素, ... 但不在 xs:all 内。这是为什么?这在解析 xml 时会产生一些歧义吗? 最佳答案 这只能由 XML Sch
我有一个场景,我需要一个 xsd,用于验证一些没有共同点的 xml。例如, xml1: .. .. .. xml2: .. .. 我需要一个通用的 xsd,以便验证具有“require
我必须与 WSDL 包含以下复杂类型的 Web 服务通信:
本文整理了Java中org.geotools.xs.XS.getInstance()方法的一些代码示例,展示了XS.getInstance()的具体用法。这些代码示例主要来源于Github/Stack
我正在尝试使用 HANA XS Javascript 实现简单的产品目录。目录的页面应该在服务器端呈现。 如何根据从 HANA 数据库读取的数据处理“动态”URL?例如,http:///myapp/s
当前在 Talend 上运行代码并抛出此错误 net.sf.saxon.trans.XPathException: Cannot compare xs:string to xs:integer at
split :: [a] -> Int -> ([a], [a]) split [xs] n = (take n [xs], drop n [xs]) 如果我将变量指定为 xs 而不是 [xs
免责声明:在 perlmonks 询问. 我希望我正确地描述和描述了我的问题......在 XS 中,我试图将回调发送到外部库的函数,其中回调具有 Perl 特定的函数。 XSUB 作为函数指针传递给
我对 XML Schema 还是有点陌生,我正在尝试在 Relax NG Compact 中做一些看起来像这样的事情: test = element test{ element A {text},
我有一个类似于以下的文档类型: abc true abc 以下文档在语义上与前面的文档相同: true abc
我正在尝试使用 xs:choice 元素,但是在验证 XSD 文件时,我收到一个错误,我认为它与 xs:choice 元素有关。我已经搜索了很多这个问题,找到了一些类似的问题,但没有一个给我我正在寻找
我想定义一个复杂类型,其中包含可能存在或不存在的元素,并且还允许其他未定义的元素,所以我有这样的东西: 我不想使用 强制执行订单所以我想改变至 但随后 不允许。有
如果 Reverse :: [k] -> [k]是一个类型族,那么 Haskell 无法判断 (Reverse (Reverse xs)) ~ xs .有没有办法让类型系统知道这一点而无需任何运行时成
我已经开始创建 XSD,并在 xs:integer 和 xs:int 的几个示例中找到了。 xs:integer 和 xs:int 之间有什么区别?我什么时候应该使用xs:integer?我什么时候应
我正在使用 Apache CXF 从 java 类创建自下而上的 Web 服务 在 java 类中,我将 java.util.Date 和 java.util.Calendar 用于两个字段 当 WS
我正在使用 Bootstrap 3 设计一个网站。我遇到过网格系统没有按预期工作的情况。 我试图将类设置为 visible-xs-6 col-xs-offset-3 最后一行中的 HTML5 Logo
我是一名优秀的程序员,十分优秀!