我想在uiscrollview周围绘制边框/阴影,我知道我可以通过额外的视图或滚动视图到达那里但不喜欢处理缺点但我听说应该有可能直接画边框滚动视图,这是我想要的。
我对iphone开发很安静,任何答案都会有所帮助。
答案 0 :(得分:19)
如果您使用滚动视图(或任何UIView)的图层属性,您可以轻松获得稳固的边框...
#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.0 stretchableImageWithLeftCapWidth:topCapHeight:
,因此如果您仍想支持iOS 4.x设备,请仅使用此功能。如果您只想支持iOS 5.0+设备,请改用:
newImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(6, 6, 6, 6)];
然后将图像放在父视图上,使其占据滚动视图的整个区域。如果你想让阴影超过你的可滚动元素,(所以你的滚动视图看起来在页面的其余部分后面/后面),然后在顶部放置一个透明的UIView,上面有阴影图像,这样就可以显示滚动视图背后。
答案 1 :(得分:5)
别忘了:
#import <QuartzCore/QuartzCore.h>
如果你想使用
myView.layer.borderWidth = 2;
myView.layer.borderColor = [UIColor blackColor].CGColor;
答案 2 :(得分:2)
要从UIColor获取CGColorRef,您还可以使用此示例:
myView.layer.borderWidth = 2;
myView.layer.borderColor = [UIColor blackColor].CGColor;
答案 3 :(得分:1)
myView.layout.borderColor在使用UIColor时会生成不兼容的指针警告,并且没有为我更改边框。
使用CGColorRef代替我工作:
CGFloat lComponents[4] = {0,0,0,1};
CGColorSpaceRef lColorSpace = CGColorSpaceCreateDeviceRGB();
myView.layer.borderColor = CGColorCreate(lColorSpace, lComponents);
CGColorSpaceRelease(lColorSpace);