如何缩放视图并保持原始尺寸\比例的自定义边框?

时间:2012-05-27 13:38:51

标签: ios uiview border scale

我正在建立一个ios应用程序。 在我的应用程序中,我有一个视图,其中包含ImageView 我在图片视图周围添加了子视图,创建了一个边框。 每个子视图都有自己独特的值(5,10,15,10)

我为用户提供移动,旋转和缩放超级视图的功能。 目前,每个比例都会导致我的边框视图也发生变化。 我希望内部图像周围的边框保持原始的,未缩放的尺寸。

正如您在屏幕截图中看到的,我有两个UIViews。 它们都有相同的阴影边框(见代码) 第一个是缩放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 ] ];

enter image description here

如何做到这一点?

1 个答案:

答案 0 :(得分:0)

在我看来,视图可能不会被重绘,而只是在内存中缩放。尝试设置view.contentMode = UIViewContentModeRedraw,或通过发送[view setNeedsDisplay]消息手动强制重绘。