如何缩放视图并将自定义边框保持在原始大小\缩放?
Posted
技术标签:
【中文标题】如何缩放视图并将自定义边框保持在原始大小\\缩放?【英文标题】:How to scale view and keep custom borders in the original size \ scale?如何缩放视图并将自定义边框保持在原始大小\缩放? 【发布时间】:2012-05-27 13:38:50 【问题描述】:我正在构建一个 ios 应用程序。 在我的应用程序中,我有一个视图,其中包含 ImageView 通过在图像视图周围添加子视图,我在图像视图周围创建了一个边框。 每个子视图都有自己独特的值 (5,10,15,10)
我让我的用户能够移动、旋转和缩放超级视图。 目前,每个比例都会导致我的边界视图发生变化。 我希望内部图像周围的边框保持不变的原始大小。
正如您在屏幕截图中看到的,我有两个 UIView。 它们都有相同的阴影边框(见代码) 第一个是缩放 X 2。结果不仅是缩放的视图,还有缩放的阴影。 我的问题是,我怎样才能只缩放视图,而不是它的阴影。
view.layer.MasksToBounds = false;
view.layer.ShadowColor = [[UIColor alloc] initWithRed:0 green:0 blue:0 alpha:0.5].CGColor;
view.layer.ShadowOpacity = 0.5f;
view.layer.shadowRadius = 1.0f;
view.layer.ShadowOffset = CGSizeMake(0, 2.5f);
UIBezierPath * depthShadowPath = [UIBezierPath bezierPath ];
[depthShadowPath moveToPoint:CGPointMake( -border , -border ) ];
[depthShadowPath addLineToPoint:CGPointMake( view.frame.size.width + border , -border ) ];
[depthShadowPath addLineToPoint:CGPointMake( view.frame.size.width + border , view.frame.size.height + border) ];
[depthShadowPath addLineToPoint:CGPointMake( -border , view.frame.size.height + border ) ];
[depthShadowPath addLineToPoint:CGPointMake( -border , -border) ];
[view.layer setShadowPath:[depthShadowPath CGPath ] ];
如何做到这一点?
【问题讨论】:
您可以为我们添加截图吗?根据您所说,我在脑海中描绘了两种不同的事物,但无法弄清楚您的项目实际上是如何设置的:) 我原以为这取决于您如何更改边框视图大小。您是否使用自动调整大小的蒙版?您是否手动设置值?正如 WendiKidd 建议的那样,我们可能还需要查看更多内容,也许还需要查看代码(或者至少描述您的代码如何移动、旋转、缩放超级视图,因为有不同的方法可以做到这一点,因此解决方案各不相同)。 你找到方法了吗? 【参考方案1】:在我看来,视图可能不会被重绘,而只是在内存中缩放。尝试设置view.contentMode = UIViewContentModeRedraw
,或通过发送[view setNeedsDisplay]
消息手动强制重绘。
【讨论】:
我认为您需要提供一些代码,而不是抱怨和否决建设性的帮助。你没有说你是如何进行缩放的。此外,您也没有说明缩放完成后是否实际运行重绘代码。 你是对的,我不应该对你的答案投反对票,只是你没有提供好的解决方案,我不想让其他人在未来感到困惑。当 5 小时限制结束时,我会支持你的答案以上是关于如何缩放视图并将自定义边框保持在原始大小\缩放?的主要内容,如果未能解决你的问题,请参考以下文章