首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zoomScale,contentOffset和Retina

zoomScale,contentOffset和Retina
EN

Stack Overflow用户
提问于 2013-04-01 22:40:29
回答 1查看 339关注 0票数 0

我有looked into all these SO answers,但他们似乎都没有解决我面临的问题。

它的缺点是,我的滚动/缩放代码在视网膜前设备上可以正常工作,但在4,4S &5和iOS 5.x和6.x上,我的代码适用于我测试的缩放值低于1.0的任何值,但当zoomScale恰好是1.0或更高时,我的代码就会中断。

在这一点上,整个视图向上/左移动。

此代码:

代码语言:javascript
复制
- (void) layoutSubviews {

    [super layoutSubviews] ;

    ::NSLog(@"x:%.02f contentOffset (%0.2f:%0.2f)"
    ,   self.zoomScale
    ,   self.contentOffset.x
    ,   self.contentOffset.y) ;
}

在视网膜上产生这种情况:(突转用于zoomScale从小于1.0到大于1.0)

代码语言:javascript
复制
x:0.96 contentOffset (1334.37:622.55)
x:0.98 contentOffset (1371.34:639.45)
x:1.00 contentOffset (226.45:202.26) 
x:1.02 contentOffset (227.59:204.19) 
x:1.03 contentOffset (228.71:206.10) 

在非视网膜上产生这种情况:(平滑过渡用于zoomScale从小于1.0到大于1.0)

代码语言:javascript
复制
x:0.95 contentOffset (2211.01:2247.41) 
x:0.97 contentOffset (2257.25:2295.54) 
x:0.99 contentOffset (2303.52:2343.69) 
x:1.03 contentOffset (2403.40:2447.63) 
x:1.05 contentOffset (2457.57:2504.00) 

有没有人?

编辑日志--滚动/缩放的视图转换--会产生一致的结果(仍然是错误的!)结果:

非Retina

代码语言:javascript
复制
scale:0.98 contentOffset(29.11:40.02) transform: [0.978491, 0, 0, 0.978491, 0, 0]
scale:0.99 contentOffset(31.79:43.71) transform: [0.992378, 0, 0, 0.992378, 0, 0]
scale:1.01 contentOffset(35.71:49.11) transform: [1.01268, 0, 0, 1.01268, 0, 0]
scale:1.03 contentOffset(38.40:52.79) transform: [1.02656, 0, 0, 1.02656, 0, 0]
scale:1.04 contentOffset(41.09:56.49) transform: [1.04048, 0, 0, 1.04048, 0, 0]

视网膜

代码语言:javascript
复制
scale:0.98 contentOffset(1377.56:1511.69) transform: [0.984364, 0, 0, 0.984364, 0, 0]
scale:0.99 contentOffset(1392.50:1528.51) transform: [0.993929, 0, 0, 0.993929, 0, 0]
scale:1.02 contentOffset(227.42:300.11) transform: [1.01742, 0, 0, 1.01742, 0, 0]
scale:1.03 contentOffset(228.26:301.48) transform: [1.02922, 0, 0, 1.02922, 0, 0]
scale:1.03 contentOffset(228.48:301.84) transform: [1.03236, 0, 0, 1.03236, 0, 0]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-02 00:49:34

已修复。

当我在初始化中替换

代码语言:javascript
复制
 self.scrollView.contentSize = (CGSize) {CGFLOAT_MAX, CGFLOAT_MAX} ;

使用

代码语言:javascript
复制
self.scrollView.contentSize = (CGSize) {1e9, 1e9} ;

然后,zoomScale和contentOffset在视网膜和非视网膜设备上变得一致。

我的猜测是,当苹果推出视网膜设备时,他们也(无意中?)将浮点坐标空间的跨度从

CGFLOAT_MIN,CGFLOAT_MAX

未定义的CGFLOAT_MAX/retina-device-scale

..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15753163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档