`
lizhuang
  • 浏览: 904376 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

9- slice image IOS

 
阅读更多
//
//  UIImageAdditions.m
//  Newspress
//
//  Created by Kyle Van Essen on 10-04-10.
//  Copyright 2010 Vibealicious. All rights reserved.
//

#import "UIImageAdditions.h"


@implementation UIImage (Additions)

+(void)drawNinePartImage:(NSArray *)images inRect:(CGRect)rect
{
    CGPoint origin = rect.origin;
    CGSize size = rect.size;

    NSInteger partCount = 9;

    if ([images count] < partCount)
        return;

    CGRect rects[partCount];
    UIImage *image;

    // Top Row
    image = [images objectAtIndex:0];
    rects[0] = CGRectMake(origin.x, origin.y, image.size.width, image.size.height);

    image = [images objectAtIndex:2];
    rects[2] = CGRectMake(origin.x + size.width - image.size.width, origin.y, image.size.width, image.size.height);

    image = [images objectAtIndex:1];
    rects[1] = CGRectMake(rects[0].size.width + rects[0].origin.x, origin.y, size.width - rects[0].size.width - rects[2].size.width, image.size.height);

    // Bottom Row
    image = [images objectAtIndex:6];
    rects[6] = CGRectMake(origin.x, origin.y + size.height - image.size.height, image.size.width, image.size.height);

    image = [images objectAtIndex:8];
    rects[8] = CGRectMake(origin.x + size.width - image.size.width, origin.y + size.height - image.size.height, image.size.width, image.size.height);

    image = [images objectAtIndex:7];
    rects[7] = CGRectMake(rects[6].size.width + rects[6].origin.x, origin.y + size.height - image.size.height, size.width - rects[6].size.width - rects[8].size.width, image.size.height);

    // Middle Row
    image = [images objectAtIndex:3];
    rects[3] = CGRectMake(origin.x, origin.y + rects[0].size.height, image.size.width, size.height - rects[0].size.height - rects[6].size.height);

    image = [images objectAtIndex:5];
    rects[5] = CGRectMake(origin.x + size.width - image.size.width, origin.y + rects[0].size.height, image.size.width, size.height - rects[2].size.height - rects[8].size.height);

    image = [images objectAtIndex:4];
    rects[4] = CGRectMake(rects[3].size.width + rects[3].origin.x, origin.y + rects[0].size.height, size.width - rects[0].size.width - rects[2].size.width, size.height - rects[1].size.height - rects[7].size.height);

    for (NSInteger index = 0; index < partCount; index++)
    {              
        UIColor *pattern = [[UIColor alloc] initWithPatternImage:[images objectAtIndex:index]];

        //NSLog(@"Frame: %f, %f, %f, %f", rects[index].origin.x, rects[index].origin.y, rects[index].size.width, rects[index].size.height);

        [pattern set];
        CGContextSetPatternPhase(UIGraphicsGetCurrentContext(), CGSizeMake(rects[index].origin.x, rects[index].origin.y));
        UIRectFill(rects[index]);

        [pattern release];
    }

    [[UIColor clearColor] set];
}

@end
分享到:
评论

相关推荐

    前端开源库-css-slice-imgs

    【前端开源库-css-slice-imgs】是一个专为前端开发者设计的开源库,其核心功能是帮助优化CSS中的背景图像处理。在Web开发中,为了提高页面加载速度和减少HTTP请求,开发者常会将一张大的图片切割成多个小图,然后...

    h264-sps-slice-nalunit解析VS2017.rar

    本文将围绕“h264-sps-slice-nalunit”这一主题,深入探讨H264编码中的关键组件——Sequence Parameter Set (SPS)、Picture Parameter Set (PPS)、Slice以及Network Access Layer Unit (NAL Unit),并结合Visual ...

    TIA博途-截取有效字符串FB全局库文件-V17版本-GF-String-Slice.zip

    在给定的压缩包文件“TIA博途-截取有效字符串FB全局库文件-V17版本-GF-String-Slice.zip”中,我们主要关注的是如何在TIA博途V17中实现字符串处理,特别是截取有效字符串的功能。 FB(Function Block)是PLC编程中...

    Time-slice-rotation-algorithm.rar_slice

    current-&gt;time_slice--; return current; } else { // 时间片耗尽,将进程放回队尾 rear--; // 因为队列是循环的,所以这里可以不用考虑溢出 current-&gt;time_slice = initial_time_slice; // 重置时间片 return...

    slice-ios:Slice iOS SDK

    Slice iOS SDK 通过开发人员可以访问用户的在线购买历史记录。 它通过处理电子邮件回执来工作,并且涉及商户和产品类别。 可用的资源包括订单,物料,装运等。 SliceSDK是在iOS上使用Slice API的便捷框架。 注意...

    git-slice:切片git仓库

    用于切片git存储库 警告! 这将对您的git存储库执行永久修改! 小心。 安装 raco pkg install git-slice 样品使用: $ cd my-repo ...git-slice/filter和git-slice/chop步骤可能需要很长时间。

    通过border-image实现相册框的效果

    要实现相册框效果,通常会用到一张包含边框和内阴影的图像,然后通过调整 `border-image-slice` 和 `border-image-repeat` 属性来创建所需的外观。例如,我们可以设置 `border-image-slice` 为图像宽度和高度的一半...

    iOS下border-image不起作用的解决办法

    在iOS设备上,有时开发者会遇到`border-image`样式不生效的问题,这通常是由于浏览器的兼容性或特定的渲染机制导致的。`border-image`是一个非常有用CSS3属性,允许我们使用图像来创建复杂的边框效果,而不仅仅是...

    QT使用border-image实现9宫格效果

    我们可以使用`border-image-slice`属性来指定图像的切割位置,例如: ```css QPushButton { border-image: url(:/testImage) 10 10 10 10 fill stretch; } ``` 这里的数字`10 10 10 10`分别代表图像的上、右、下...

    24张图攻克border-image.doc

    总结一下,`border-image`是CSS3中的一个重要特性,它提供了丰富的边框设计选项,通过组合使用`border-image-source`、`border-image-slice`、`border-image-width`、`border-image-outset`和`border-image-repeat`...

    bigslice:用于生物合成基因簇数据大规模分析的高度可扩展,用户交互工具

    使用pip安装BiG-SLiCE : 来自PyPI(稳定) user@local:~ $ pip install bigslice 从来源(出血边缘) user@local:~ $ git clone git@github.com:medema-group/bigslice.git user@local:~ $ pip install ./big...

    ByteArray-Scale-Bitmap.rar_ByteArray_slice

    "ByteArray-Scale-Bitmap.rar_ByteArray_slice" 提供了一种利用ByteArray来处理9-slice Bitmap缩放的技术,这对于优化GUI性能和适应不同屏幕尺寸至关重要。9-slice缩放是一种特殊的图像拉伸方法,它确保了图片在放大...

    Round-Robin-time-slice.rar_robin时间片_slice_轮转法

    时间片轮转法:程序模拟进程的时间片轮转RR调度过程。Time slice Round-Robin: program to simulate the process time slice rotation RR scheduling process.

    计算h264码流slice的数目及大小

    H.264中的slice分为三种类型:I-slice(Intra-slice,只包含I帧的宏块),P-slice(Predicted-slice,包含P帧的宏块)和B-slice(Bidirectional-slice,包含B帧的宏块)。I帧不依赖于其他帧,P帧依赖于前一帧,B帧...

    HLS-SLICE-TOOL

    本工具是用Qt开发的,用来对mp4进行转码,并切割为hls文件,可一键操作。

    ember-cli-array-slice:Ember CLI阵列分片插件

    content : [ 3 , 1 , 4 , 1 , 5 , 9 ] , offset : 2 , limit : 3 } ) ; console . log ( sliced . toArray ( ) ) ; // [4, 1, 5]; 特性 content :Ember.Array(可选,默认= [] ) 内容数组。 必须是实现Ember....

    turf-line-slice:在起点和终点处切片 LineString

    turf.line-slice (Point, Point, Line) 在起点和终点处切片 LineString 参数 范围 类型 描述 Point 观点 开始切片 Point 观点 停止切片 Line 线串 切片 例子 var line = { "type" : "Feature" , "properties...

    mesh-slice-polygon:用平面切片网格并返回生成的多边形

    网格切片多边形用平面切片网格并返回生成的多边形安装npm install mesh-slice-polygon 用下面的代码是提取 var createSlicer = require ( './mesh-slice-polygon' ) ;var slicer = createSlicer ( ) ;var stl = ...

    time-slice-polling-method-.zip_polling method_slice_时间片轮询法_时间轮询_

    单片机程序编写的主体思想--多任务分层思,即参考时间片轮询法!内容包括思想介绍和一个简单的例程。

Global site tag (gtag.js) - Google Analytics