1倍图2倍图尺寸 ios_ios 系统一倍图到三倍图尺寸 - CSDN
  • 1. 第一步 点击 Assets.xcassets 进入图片管理,然后点击“+”号如,选择"New iOS Launch Image" 2. 第二步 如,右侧的勾选可以让你选择是否要对ipad,横屏,竖屏,以及低版本的ios系统做支持.这边我...

    1. 第一步

    点击 Assets.xcassets 进入图片管理,然后点击“+”号如图,选择"New  iOS Launch Image"

    2. 第二步

    如图,右侧的勾选可以让你选择是否要对ipad,横屏,竖屏,以及低版本的ios系统做支持.这边我选了ios8.0,ios7.0,ios6没有做支持.

    3.  第三步

     将规定尺寸的图片从你的文件中拖动进到固定位置.一般来讲,苹果手机屏幕尺寸有iPhone4,iPhone5,iPhone6,iPhone6 plus。到现在发布的iPhone7/iPhone7 p的手机都是在这几个尺寸中的。

    系统尺寸分辨率

     Retina HD5.5                                 1242x2208 (6 plus)   R5.5位置 竖屏

    Retina HD4.7                                  750x1334 (6)             R4.7位置

    Landscape Retina Hd 5.5                2208x1242(6 plus)    R5.5位置 横屏

    Default@2x                                      640x960  (4/4s)              2X位置

    Retina4                                            640x1136(5/5s/5c)    R4位置

     



    第四步    单击你整个项目名称,然后选择General,就是这个

    我完成上面的步骤,且设置了Launch Images Srouce 为LaunchImage,但是启动图片还是不变,后来发现Launch

    SrceenFile,这个里面设置了,进去看下,你的目录下有个文件叫做LaunchScreen.xib

    打开右侧框,选择这个文件,然后在如图,把Use as launch Srceen取消掉,这个就是你之前一直设置Launch

    Image不成功的原因

     

     

    如果你觉得你开启太快,那么漂亮得LaunchImage还没怎么展示就跳过了.你可以在你的第一个加载页面中添加如下代码来延长LaunchImage的显示时间.

    //Swift code//这个是swift得版本的.你千万不要自己新增一个方法viewDidLoad,你的工程里面有

    viewDidLoad(){super.viewDidLoad()

    NSThread.sleepForTimeInterval(3.0)//延长3秒}

    //objective-c code//

    //设置启动页面时间

    [NSThread sleepForTimeInterval:0.2];

    }

    iPhoneX的启动图如何配置
    针对使用LaunchImage。 
    问题说明:如无配置,则应用呈现上下黑边的效果。 
    问题解决: 
    1、进入LaunchImage,点击一张之前的启动图,在右侧LaunchImage选项下的iOS8.0 and Later选项下勾选Portrait。此时LaunchImage就多出了个iPhone X的启动图位置。 
    2、把做好的图片,大小为1125*2436,名称例如LaunchImage-1100-2436h@3x.png,拉入这个空位就可以了。


    链接:https://www.jianshu.com/p/bbc01a3bb8dc
     

    展开全文
  • 工作中,一直做移动端app(不包括ios和ipad),所以对...@2x,@3x),我开始以为只要图片够大,就不用整什么两倍图,三倍的,只要图片能自适应各种屏幕就行了吧,但后来发现还是必须要有的,ios系统必须要这个bg...

    工作中,一直做移动端app(不包括ios和ipad),所以对一些手机端的比较熟悉,但没做过ipad端的,今天工作中正好有碰到一个ipad设计(效果图+切图),刚开始以为和手机端一样,但做的过程中发现还是有不一样的地方,比如常识性的切图(一倍图,@2x,@3x),我开始以为只要图片够大,就不用整什么两倍图,三倍图的,只要图片能自适应各种屏幕就行了吧,但后来发现还是必须要有的,ios系统必须要这个bg@2x.png和bg@3x.png,加上一倍图bg.png就是这三张图必须要有,不管你的原图多大,多高清,你设置的多自适应,这三张图你必须提供!呜呜呜..........常识性的东东.......

    这过程中找了一些资料,搜集整合,分享给一些有需要的伙伴们!

     

    一,ios开发为什么要弄@2x和@3x两套图 ?

    1.对不同size的屏幕会自动匹配不同的图片。代码中只要写前面的图片名就好了,系统会自动找到对应图片的。

    2.@2x 和 @3x 名字是一样的,系统会自动判断添加哪套图的

    3.@2x给Retina屏幕用的,@3x是给6plus用的

    例如:

    一个是30px*30px的PNG图片,用原名来命名即可,例如sample.png。

    一个是60px*60px的PNG图片,这个要用原名@2x来命名,例如sample@2x.png

    一个是90px*90px的PNG图片,这个要用原强调内容名@3x来命名,例如sample@3x.png

    这样把这三张图片导入进工程,你会神奇地发现,这三个文件居然会被iOS统一识别为sample.png

     

    二,应用场景

    (1) 1x的图标用于1:1的屏幕,非视网膜屏,例如iPhone 3GS、(/20140414DEL/ //早期iPhone 4)

    非视网膜屏的众多iPad等。

    (2) 2x的图标用于1:2的屏幕,大部分视网膜屏,机型如(/20140414ADD/ iPhone 4、)iPhone 4S

    、iPhone 5、iPhone 5s、iPhone 6、iPad with Retina及后续的视网膜屏iPad等。

    (3) 3x的图标目前应用于1:3的屏幕,即iPhone 6Plus

     

    展开全文
  • 由于本人长期从事后台研发工作,对前端及UI常用工具(比如PS)并不熟悉,于是开发了下面这个工具对一个大尺寸图片进行裁剪,生成1倍2倍、3倍尺寸图片,方便进行IOS开发。 工具介绍 该工具接受两个参数,分别为...

    IOS图片生成工具(@1X,@2X,@3X)

    在进行IOS开发过程中,经常需要为了适配不同分辨率的设备而准备不同尺寸的图片。由于本人长期从事后台研发工作,对前端及UI常用工具(比如PS)并不熟悉,于是开发了下面这个工具对一个大尺寸的图片进行裁剪,生成1倍、2倍、3倍尺寸的图片,方便进行IOS开发。

    工具介绍

    该工具接受两个参数,分别为源图片文件或目录和目标图片存放文件夹。源图片为分辨率高于所有裁剪结果图片的分辨率(@1X,@2X,@3X)。

    裁剪结果图片的尺寸写在ResizeImage类开头处,可以根据需要进行修改。

    工具代码

    package tools;
    
    import common.Base;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.util.Arrays;
    
    /**
     * Genarate @1X, @2X, @3X pictures.
     *
     * @author zjm
     */
    public class ResizeImage extends Base {
        private static final Logger LOGGER = LoggerFactory.getLogger(ResizeImage.class);
    
        /**
         * {width, height}
         */
        //    private static final int[] SIZE_3X = new int[] { 300, 402 };
        //    private static final int[] SIZE_2X = new int[] { 200, 268 };
        //    private static final int[] SIZE_1X = new int[] { 100, 134 };
        private static final int[] SIZE_3X = new int[] { 300, 300 };
        private static final int[] SIZE_2X = new int[] { 200, 200 };
        private static final int[] SIZE_1X = new int[] { 100, 100 };
    
        private String srcFileOrDirctory;
        private String destDirectory;
    
        public ResizeImage() {
    
        }
    
        public ResizeImage(String srcFileOrDirctory, String destFileOrDirectory) {
            this.srcFileOrDirctory = srcFileOrDirctory;
            this.destDirectory = destFileOrDirectory;
        }
    
        public String getSrcFileOrDirctory() {
            return srcFileOrDirctory;
        }
    
        public void setSrcFileOrDirctory(String srcFileOrDirctory) {
            this.srcFileOrDirctory = srcFileOrDirctory;
        }
    
        public String getDestDirectory() {
            return destDirectory;
        }
    
        public void setDestDirectory(String destDirectory) {
            this.destDirectory = destDirectory;
        }
    
        public void resizeImage() throws Exception {
            LOGGER.debug("Resize image parameters: src - {}, dest - {}", srcFileOrDirctory, destDirectory);
    
            File src = new File(srcFileOrDirctory);
    
            File dest = new File(destDirectory);
            if (dest.exists() && dest.isFile()) {
                throw new IllegalArgumentException("Not a directory: " + dest);
            }
            dest.mkdirs();
    
            if (src.exists() && src.isDirectory()) {
                File[] images = src.listFiles();
                for (File image : images) {
                    resizeImage(srcFileOrDirctory, destDirectory);
                }
            } else if (src.exists() && src.isFile()) {
                resizeImage(srcFileOrDirctory, destDirectory);
            } else {
                throw new IllegalArgumentException("No such file or directory: " + src);
            }
        }
    
        private void resizeImage(String src, String dest) throws Exception {
            File destImage;
    
            destImage = new File(dest, getTypePrefix(src) + "@3X." + getTypeAppendix(src));
            resizeImage(src, destImage.getAbsolutePath(), SIZE_3X);
    
            destImage = new File(dest, getTypePrefix(src) + "@2X." + getTypeAppendix(src));
            resizeImage(src, destImage.getAbsolutePath(), SIZE_2X);
    
            destImage = new File(dest, getTypePrefix(src) + "@1X." + getTypeAppendix(src));
            resizeImage(src, destImage.getAbsolutePath(), SIZE_1X);
        }
    
        private void resizeImage(String src, String dest, int[] size) throws Exception {
            LOGGER.debug("Resizing image {} to {} in size {} ...", src, dest, Arrays.toString(size));
    
            BufferedImage srcImage = ImageIO.read(new File(src));
    
            BufferedImage destImage = new BufferedImage(size[0], size[1], srcImage.getType());
            Graphics2D destGraph = destImage.createGraphics();
            destGraph.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
            destGraph.drawImage(srcImage, 0, 0, size[0], size[1], 0, 0, srcImage.getWidth(), srcImage.getHeight(), null);
            destGraph.dispose();
    
            ImageIO.write(destImage, getTypeAppendix(src), new File(dest));
    
            LOGGER.debug("A new image {} is created.", dest);
        }
    
        private String getTypeAppendix(String image) {
            int lastIndex = image.lastIndexOf(".");
            return image.substring(lastIndex + 1);
        }
    
        private String getTypePrefix(String image) {
            int lastSlashIndex = image.lastIndexOf("/");
            int lastDotIndex = image.lastIndexOf(".");
            return image.substring(lastSlashIndex + 1, lastDotIndex);
        }
    
        public static void main(String[] args) throws Exception {
            if (args.length != 2) {
                LOGGER.error("Invalid arguments. Usage: {} <source image file or directory> <dest image directory>",
                        ResizeImage.class.getSimpleName());
                System.exit(1);
            }
            new ResizeImage(args[0], args[1]).resizeImage();
        }
    }
    
    
    展开全文
  • ios 中可以用pdf替换现在的2倍3倍图1倍图已经忽略) 1、将pdf矢量拖进工程Assets.xcassets中 2、按照步骤操作 3、矢量最后生成适配所有的图片 转载于:...

    一、在开发中矢量图的使用大大提高设计的切图效率!

    ios 中可以用pdf替换现在的2倍3倍图(1倍图已经忽略)

    1、将pdf矢量图拖进工程Assets.xcassets中

    2、按照步骤操作

    3、矢量图最后生成适配所有的图片

     

    转载于:https://www.cnblogs.com/PeterWolf/p/9447770.html

    展开全文
  • iOS图片拉伸技巧

    2013-03-02 18:24:22
    华丽外观的背后,少不了美工的辛苦设计,但如果开发人员不懂得怎么合理展示这些设计好的图片,将会糟蹋了这些设计,功亏一篑。 比如下面张图片,本来是设计来做按钮背景的: button.png,尺寸为:24x60 现在我们...

    纵观移动市场,一款移动app,要想长期在移动市场立足,最起码要包含以下几个要素:实用的功能、极强的用户体验、华丽简洁的外观。华丽外观的背后,少不了美工的辛苦设计,但如果开发人员不懂得怎么合理展示这些设计好的图片,将会糟蹋了这些设计,功亏一篑。

    比如下面张图片,本来是设计来做按钮背景的:

    button.png,尺寸为:24x60

    现在我们把它用作为按钮背景,按钮尺寸是150x50:

    // 得到view的尺寸
    CGSize viewSize = self.view.bounds.size;
    
    // 初始化按钮
    UIButton *button = [[UIButton alloc] init];
    // 设置尺寸
    button.bounds = CGRectMake(0, 0, 150, 50);
    // 设置位置
    button.center = CGPointMake(viewSize.width * 0.5f, viewSize.height * 0.5f);
    
    // 加载图片
    UIImage *image = [UIImage imageNamed:@"button"];
    // 设置背景图片
    [button setBackgroundImage:image forState:UIControlStateNormal];
    
    // 添加按钮
    [self.view addSubview:button];

    运行效果图:

    可以看到,效果非常地差。原因很简单,因为原图大小为24x60,现在整张图片被全方位拉伸为150x50,比较严重的是图片的4个角。

    有些人可能马上想到一个解决方案,你叫美工把图片做大一点不就好了么,怎么拉伸都没事。没错,这是一种解决方案,不过不建议采取。原因很简单:1.图片大,导致安装包也大,加载到内存中也大;2.有更好的解决方案。

    细看一下图片,其实图片会变得难看,完全是因为4个角被拉伸了,中间的拉伸并没有明显地丑化外观。因此要想小图片被拉伸后不会变得难看,在图片拉伸的时候,我们只需拉伸图片的中间一块矩形区域即可,不要拉伸边缘部分。

    比如只拉伸下图的矩形区域,上下左右的边缘都不拉伸:

    iOS中提供很好用的API帮我们实现上述功能。到iOS 6.0为止,iOS提供了3种图片拉伸的解决方案,接下来分别详细介绍这些方案。

    一、iOS 5.0之前

    iOS中有个叫端盖(end cap)的概念,用来指定图片中的哪一部分不用拉伸。比如下图中,黑色代表需要被拉伸的矩形区域,上下左右不需要被拉伸的边缘就称为端盖。

    使用UIImage的这个方法,可以通过设置端盖宽度返回一个经过拉伸处理的UIImage对象

     - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;

    这个方法只有2个参数,leftCapWidth代表左端盖宽度,topCapHeight代表顶端盖高度。系统会自动计算出右端盖宽度(rightCapWidth)和底端盖高度(bottomCapHeight),算法如下:

    // width为图片宽度
    rightCapWidth = width - leftCapWidth - 1;
    
    // height为图片高度
    bottomCapHeight = height - topCapHeight - 1

    经过计算,你会发现中间的可拉伸区域只有1x1

    // stretchWidth为中间可拉伸区域的宽度
    stretchWidth = width - leftCapWidth - rightCapWidth = 1;
        
    // stretchHeight为中间可拉伸区域的高度
    stretchHeight = height - topCapHeight - bottomCapHeight = 1;

    因此,使用这个方法只会拉伸图片中间1x1的区域,并不会影响到边缘和角落。

    下面演示下方法的使用:

    // 左端盖宽度
    NSInteger leftCapWidth = image.size.width * 0.5f;
    // 顶端盖高度
    NSInteger topCapHeight = image.size.height * 0.5f;
    // 重新赋值
    image = [image stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight];

    调用这个方法后,原来的image并不会发生改变,会产生一个新的经过拉伸的UIImage,所以第6行中需要将返回值赋值回给image变

    运行效果:

    可以发现,图片非常美观地显示出来了

    注意:

    1.这个方法在iOS 5.0出来后就过期了

    2.这个方法只能拉伸1x1的区域

     

    二、iOS 5.0

    在iOS 5.0中,UIImage又有一个新方法可以处理图片的拉伸问题

    - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets

    这个方法只接收一个UIEdgeInsets类型的参数,可以通过设置UIEdgeInsets的left、right、top、bottom来分别指定左端盖宽度、右端盖宽度、顶端盖高度、底端盖高度

    CGFloat top = 25; // 顶端盖高度
    CGFloat bottom = 25 ; // 底端盖高度
    CGFloat left = 10; // 左端盖宽度
    CGFloat right = 10; // 右端盖宽度
    UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);
    // 伸缩后重新赋值
    image = [image resizableImageWithCapInsets:insets];

    运行效果:

     

    三、iOS 6.0

    在iOS6.0中,UIImage又提供了一个方法处理图片拉伸

    - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode

    对比iOS5.0中的方法,只多了一个UIImageResizingMode参数,用来指定拉伸的模式:

    • UIImageResizingModeStretch:拉伸模式,通过拉伸UIEdgeInsets指定的矩形区域来填充图片
    • UIImageResizingModeTile:平铺模式,通过重复显示UIEdgeInsets指定的矩形区域来填充图片

    CGFloat top = 25; // 顶端盖高度
    CGFloat bottom = 25 ; // 底端盖高度
    CGFloat left = 10; // 左端盖宽度
    CGFloat right = 10; // 右端盖宽度
    UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right);
    // 指定为拉伸模式,伸缩后重新赋值
    image = [image resizableImageWithCapInsets:insets resizingMode:UIImageResizingModeStretch];

    运行效果:

    展开全文
  • iOS开发图片尺寸问题

    2019-07-05 10:16:18
    官方推荐:...20x20的2倍图、3倍图 29x29的2倍图、3倍图 40x40的2倍图、3倍图 60x60的2倍图、3倍图 1024x10...
  • 项目需求: 在网络上加载一组图片的...(2)第二部部分是获取图片的实际尺寸,这部分在线程中完成; (3)然后需要在主线程刷新frame,并使用sdweb加载图片 参考的网址: dispatch_group http://blog.csdn.net/yao
  • 例:图片为400X400的,在ios上打开canvas程序,然后绘画在400X400的canvas画板上 然后导出下载图片,下载出来的图片是800X800的 这个愿意是因为ios的分辨率大,我查到了,但是我想要的是,让他下载出来保持和...
  • 1. 使用系统方法直接获取 NSData *data = [NSData dataWithContentsOfURL:[NSURLURLWithString:@"http://s12.mogujie.cn/b7/bao/131011/1jix9_kqywmrcdkfbg26dwgfjeg5sckzsew_400x540.jpg_200x999.jpg"]]; UIImage ...
  • 有时候,我们需要获取一个图片的格式和大小,但是却不想从内存中把它的整个文件从内存中读取出来 因为读取整个文件的内存耗费还是有些的,所以这么做通常不可取。 实在需要读取那也没办法。 但是其实是可以从文件中...
  • ios图片尺寸2018

    2018-03-07 14:36:24
    设备名称屏幕尺寸PPIAsset竖屏点(point)竖屏分辨率(px)iPhone X5.8 in458@3x375 x 8121125 x 2436iPhone 8+, 7+, 6s+, 6+5.5 in401@3x414 x 7361242 x 2208iPhone 8, 7, 6s, 64.7 in326@2x375 x 667750...
  • IOS各种图片尺寸大小

    2015-01-21 15:44:47
    一、图标尺寸 以最新版的为例,包括iphone6, iphone 6 plus。   二、屏幕尺寸 以下是针对非retina屏的测试结果,retina屏几即可。 1. app尺寸,去掉状态栏 CGRect r = [ UIScreen ...
  • 先说下Xcode中所需要使用的图片尺寸(AppIcon、LaunchImage),我现在使用的Xcode版本是7.3.1。 1.AppIcon 中所需图片尺寸:  iPhone Spotlight - iOS5,6 Setting - iOS5-9 29pt 29X29@1x 58X58@
  • iOS LaunchImage图片尺寸

    2015-03-05 14:49:41
    1、针对竖屏启动模式下 iPhone: 1242*2208(iPhone6 plus 启用高分辨率模式) 750*1334(iPhone6 启用高分辨率模式) 640*1136 640*960 320*480 ipad: 768*1004 768*1024 ...
  • 初代iPhone 2007年,初代iPhone发布,屏幕的宽高是 320 x...那时编写iOS的App(应用程序),只支持绝对定位。比如一个按钮(x, y, width, height) = (20, 30, 40, 50),就表示它的宽度是40像素,高度是50像素,放在
  • iOS启动的分辨率屡忘屡查,在这里总结一下,方便下次再查。参考苹果开发者文档。iPhone Portrait(竖屏)iOS5-9 :320 * 480640 * 960 @2x640 * 1136 @2x Retina 4 (4英寸屏) iPhone Portrait(竖屏) iOS8-9 :...
  • 相关链接: http://blog.csdn.net/jeikerxiao/article/details/52768269
  • 1x 、2x 、3x图片介绍 手机屏幕分两种 视网膜屏: 又叫Retain屏幕,就是高清视网膜屏幕,分辨率宽高是标准屏幕分辨率的2倍 非视网膜屏 又叫非Retain屏,是标准分辨率 分辨率 概念:分辨率的意思就是把...
1 2 3 4 5 ... 20
收藏数 41,974
精华内容 16,789
关键字:

1倍图2倍图尺寸 ios