我想在 uiscrollview 周围绘制边框/阴影,我知道我可以使用额外的视图或滚动视图到达那里,但不喜欢处理缺点,但我听说应该有可能直接为滚动视图绘制边框这就是我想要的。
我对 iphone 开发很陌生,任何答案都会有所帮助。
我想在 uiscrollview 周围绘制边框/阴影,我知道我可以使用额外的视图或滚动视图到达那里,但不喜欢处理缺点,但我听说应该有可能直接为滚动视图绘制边框这就是我想要的。
我对 iphone 开发很陌生,任何答案都会有所帮助。
如果您使用滚动视图(或任何 UIView)的 layer 属性,您可以轻松获得实心边框......
#import <QuartzCore/QuartzCore.h>
...
myView.layer.borderWidth = 2;
myView.layer.borderColor = [UIColor blackColor].CGColor;
您也可以通过设置属性使用图层来应用实时阴影layer.shadow*
,但是使用此技术可能会降低性能,因此我通常更喜欢使用以下更复杂但性能更高的技术。您可以创建一个中间透明、边缘有阴影的 PNG 图像 - 它需要有 9 个不同的区域:每个角 4 个,每个边缘 4 个,中间有一个完全透明的 1x1 像素区域。例如,如果您的阴影在图像中延伸 6 个像素,则您的图像将是 13x13,具有 6 像素宽/高边框和 1x1 区域在中间。然后使用以下方法将其设置为可缩放图像:
newImage = [image stretchableImageWithLeftCapWidth:6 topCapHeight:6];
更新:由于 iOS 5.0stretchableImageWithLeftCapWidth:topCapHeight:
已被弃用,因此仅当您仍想支持 iOS 4.x 设备时才使用此功能。如果您只想支持 iOS 5.0+ 设备,请改用:
newImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(6, 6, 6, 6)];
然后将图像放在父视图上,这样它就占据了滚动视图的整个区域。如果您希望阴影覆盖您的可滚动元素,(因此您的滚动视图看起来嵌入/位于页面的其余部分之后)然后在顶部放置一个透明的 UIView 并在其上放置阴影图像,以便它显示到您的滚动视图在它后面。
不要忘记:
#import <QuartzCore/QuartzCore.h>
如果你想使用
myView.layer.borderWidth = 2;
myView.layer.borderColor = [UIColor blackColor].CGColor;
要从 UIColor 获取 CGColorRef,您还可以使用以下示例:
myView.layer.borderWidth = 2;
myView.layer.borderColor = [UIColor blackColor].CGColor;
myView.layout.borderColor 在使用 UIColor 时会生成不兼容的指针警告,并且没有为我更改边框。
使用 CGColorRef 代替了我:
CGFloat lComponents[4] = {0,0,0,1};
CGColorSpaceRef lColorSpace = CGColorSpaceCreateDeviceRGB();
myView.layer.borderColor = CGColorCreate(lColorSpace, lComponents);
CGColorSpaceRelease(lColorSpace);