【问题标题】:Shadow or Border around a scrollview iphone滚动视图 iphone 周围的阴影或边框
【发布时间】:2010-12-06 11:08:39
【问题描述】:

我想在 uiscrollview 周围画一个边框/阴影,我知道我可以通过额外的视图或滚动视图到达那里,但不喜欢处理缺点,但我听说应该有可能直接绘制边框到滚动视图,这就是我想要的。

我是 iphone 开发的新手,任何答案都会有所帮助。

【问题讨论】:

    标签: iphone uiscrollview border shadow scrollview


    【解决方案1】:

    如果您使用滚动视图(或任何 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.0 stretchableImageWithLeftCapWidth:topCapHeight: 已被弃用,因此仅当您仍想支持 iOS 4.x 设备时才使用此功能。如果您只想支持 iOS 5.0+ 设备,请改用:

    newImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(6, 6, 6, 6)];
    

    然后将图像放在父视图上,这样它就占据了滚动视图的整个区域。如果您希望阴影覆盖您的可滚动元素,(因此您的滚动视图看起来嵌入/位于页面的其余部分之后)然后在顶部放置一个透明的 UIView 并在其上放置阴影图像,以便它显示到您的滚动视图在它后面。

    【讨论】:

      【解决方案2】:

      myView.layout.borderColor 在使用 UIColor 时会生成不兼容的指针警告,并且没有为我更改边框。

      使用 CGColorRef 代替了我:

      CGFloat lComponents[4] = {0,0,0,1};
      CGColorSpaceRef lColorSpace = CGColorSpaceCreateDeviceRGB();
      myView.layer.borderColor = CGColorCreate(lColorSpace, lComponents);
      CGColorSpaceRelease(lColorSpace);
      

      【讨论】:

        【解决方案3】:

        要从 UIColor 获取 CGColorRef,您还可以使用以下示例:

        myView.layer.borderWidth = 2;
        myView.layer.borderColor = [UIColor blackColor].CGColor;
        

        【讨论】:

          【解决方案4】:

          别忘了:

          #import <QuartzCore/QuartzCore.h>
          

          如果你想使用

          myView.layer.borderWidth = 2;
          myView.layer.borderColor = [UIColor blackColor].CGColor;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-10-03
            • 1970-01-01
            • 2014-07-28
            • 1970-01-01
            • 2021-12-29
            • 2018-11-27
            • 2013-05-30
            • 2011-07-16
            相关资源
            最近更新 更多