使用 iOS6 SDK 在 iOS7 上的默认 UIProgressView 渲染
Posted
技术标签:
【中文标题】使用 iOS6 SDK 在 iOS7 上的默认 UIProgressView 渲染【英文标题】:Default UIProgressView rendering on iOS7 using iOS6 SDK 【发布时间】:2013-09-18 16:22:45 【问题描述】:我在使用默认进度视图时遇到了渲染错误。使用默认进度视图时,视图不是 9px 高,而是裁剪到大约 4px。我的应用是使用 ios6 SDK 构建的,在 iOS7 设备上运行时会出现问题。该界面是使用界面生成器构建的。
是否有解决此问题的简单方法?在界面生成器中将样式从“默认”切换为“条形”可以解决问题,但这会改变外观。
【问题讨论】:
【参考方案1】:在代码中设置框架帮助我解决了这个问题。
【讨论】:
对我有用!谢谢! 刚刚在 iOS7 上遇到了这个问题,我正在以编程方式创建我的自定义外观进度视图。我想指出,开发人员应该在为进度视图设置轨道和填充图像之后设置 UIProgressView 的框架。所以像 progressView.trackImage = ... ;和progressView.progressImage = ...;然后progressView.frame = CGRectMake(.....); 如果进度条使用progressTintColor
和trackTintColor
而不是progressImage
和trackImage
设置样式,则设置框架似乎不起作用。【参考方案2】:
@iPP 的答案不是最好的。在代码中设置框架会导致您的代码充满 iOS 版本检查,并且当支持多个设备方向时,该代码往往会变得非常复杂。
我认为最好的方法是在 Xcode 5 中使用新功能“iOS 6/7 Deltas”。
而“iOS 6/7 Deltas”的关键用法是:
当 Auto Layout 关闭时,您会注意到 Interface Builder 实用程序区域(右窗格)的大小选项卡中的一个区域,允许您设置 iOS 6/7 Deltas。可以为每个视图单独设置增量,并按照您的预期工作。如果您的故事板或笔尖设置为在 iOS 6 中查看,那么设置增量将导致该视图在 iOS 7 中运行时按照设置的增量量移动和/或调整大小。或者,如果您的情节提要或笔尖设置为查看在 iOS 7 中,增量将在 iOS 6 中运行时应用。这两个工具都可以帮助您支持旧版本的 iOS 和 iOS 7
对于UIProgressView,这里你可以尝试将“delta Y”设置为-7px,因为iOS 7只是将UIProgressView的Y原点减少了7px,所以在iOS7中运行时,我们应该把它还给7px。
【讨论】:
它在 iOS 7 中不起作用。请提出更好的方法。 @jianpx,我同意。我们必须在没有 delta 选项的 Xcode 4.x 中快速修复构建。所以设置框架是出路..【参考方案3】:这就像iOS7 的进度视图使用iOS7 Style 的框架。 你有两种方法。 1.设置进度视图样式---bar,可以在nib文件或者代码中进行。 2.使用代码设置框架。就像是: progressView.frame = CGRectMake(x,y,w,h);
当您旋转或更改布局时,第二个将面临布局问题。 所以最简单的方法是设置进度视图的样式。
【讨论】:
以上是关于使用 iOS6 SDK 在 iOS7 上的默认 UIProgressView 渲染的主要内容,如果未能解决你的问题,请参考以下文章
iOS6和iOS7环境下微信登录未显示问题&微信IOS的SDK:isWXAppInstalled总是返回NO和nil