具有平铺背景图像的 UIView 旋转上的视觉伪影

发布于 2024-09-05 02:28:08 字数 409 浏览 8 评论 0原文

我有一个带有标准 UIViewController/UIView 设置的 iPad 应用程序 - 允许所有旋转。 UIView 绘制一些平铺图像作为背景(平铺图像为 256*256 像素):

- (void)drawRect:(CGRect)rect
{
    [[UIImage imageNamed: @"Background.png"] drawAsPatternInRect: rect];
}

当我转动 iPad 时,我可以看到在旋转过程中原始方向的图像图案缩放以适应新的方向方向。然后 - 动画完成后立即 - 视图使用未缩放的最终配置重绘其背景图案。从缩放模式切换到未缩放模式看起来有点难看。

有没有办法规避(或隐藏)背景图案的这种拉伸?

I have an iPad app with a standard UIViewController/UIView setup - all rotations are allowed. The UIView draws some tiled image as background (the tile is 256*256 pixels):

- (void)drawRect:(CGRect)rect
{
    [[UIImage imageNamed: @"Background.png"] drawAsPatternInRect: rect];
}

When I turn my iPad I can see that during the rotation the image pattern of the original orientation is scaled to fit the new orientation. Then - immediately after the animation is finished - the view redraws its background pattern with the final configuration which is unscaled. The switching from a scaled to an unscaled pattern looks a bit ugly.

Is there a way to circumvent (or hide) this strecthing of the background pattern?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

忆离笙 2024-09-12 02:28:08

为什么不使用图案图像作为背景“颜色”?这会自动产生平铺图案,并避免使用drawRect()的任何特技。例如:

UIImage *backgroundTile = [UIImage imageNamed: @"Background.png"];
UIColor *backgroundPattern = [[UIColor alloc] initWithPatternImage:backgroundTile];
[myView setBackgroundColor:backgroundPattern];
[backgroundPattern release];

Why not use a pattern image as background "color"? This automatically results in a tiled pattern and avoids any stunts with drawRect(). For example:

UIImage *backgroundTile = [UIImage imageNamed: @"Background.png"];
UIColor *backgroundPattern = [[UIColor alloc] initWithPatternImage:backgroundTile];
[myView setBackgroundColor:backgroundPattern];
[backgroundPattern release];
放低过去 2024-09-12 02:28:08

简单地说,

[myView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed: @"Background.png"] ] ];

to put simply,

[myView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed: @"Background.png"] ] ];

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文