demo没有图标 ios_ios demo - CSDN
  •  QQ群:807236138 群称: iOS 技术交流学习群     一、概念  1.此方法很简单,有操作视图和方法,动画效果参考  2.图片下面有链接  3.GIF 图请看简书: http://www.jianshu.com/p/507d0722ce8c...

       联系人:石虎 QQ:1224614774  昵称: 嗡嘛呢叭咪哄

                            QQ群:807236138  群称: iOS 技术交流学习群

     

     

    一、概念

     1.此方法很简单,有操作视图和方法,动画效果参考

      2.图片下面有链接

      3.GIF 图请看简书:   http://www.jianshu.com/p/507d0722ce8c

    二、代码实现

    #import "SHViewController.h"
    #define ANGLE_TO_RADIAN(angle) ((angle)/180.0 * M_PI)
    
    @interface SHViewController ()
    //图标
    @property (weak,nonatomic)IBOutletUIImageView *iconView;
    //开点按钮
    - (IBAction)start;
    //结束按钮
    - (IBAction)end;
    
    @end
    
    @implementation CZViewController
    - (void)viewDidLoad{
        [superviewDidLoad];
    }
    
    //开点按钮功能呢
    - (IBAction)start {
    
        //实例化
        CAKeyframeAnimation *anim = [CAKeyframeAnimationanimation];
        //拿到动画 key
        anim.keyPath =@"transform.rotation";
        // 动画时间
        anim.duration =.25;
        
        // 重复的次数
        //anim.repeatCount = 16;
        //无限次重复
        anim.repeatCount =MAXFLOAT;
    
        //设置抖动数值
        anim.values =@[@(ANGLE_TO_RADIAN(-5)),@(ANGLE_TO_RADIAN(5)),@(ANGLE_TO_RADIAN(-5))];
    
        // 保持最后的状态
        anim.removedOnCompletion =NO;
        //动画的填充模式
        anim.fillMode =kCAFillModeForwards;
        //layer层实现动画
        [self.iconView.layeraddAnimation:animforKey:@"shake"];
    
    }
    
    //点击结束按钮
    - (IBAction)end {
    
        //图标
        [self.iconView.layerremoveAnimationForKey:@"shake"];
    
    }
    
    @end

    谢谢!!!

     

     

     

    展开全文
  • 作者:流火绯瞳 ...來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。...动态修改app的图标,就是在不重新安装app的情况下,可以修改当前的icon图标;在某些情况下...

    作者:流火绯瞳
    链接:https://www.jianshu.com/p/69313970d0e7
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    Demo地址 

    https://github.com/ychexingwuji/DM_APP_Icon_Change

    动态修改app的图标,就是在不重新安装app的情况下,可以修改当前的icon图标;在某些情况下,是有这个需求的;例如,可以更换主题的app中,一般都会有一套完整的主题包含相应的icon;还有就是一些节日主题的icon或者促销的icon,例如淘宝、京东等的节日icon。

    在iOS 10.3之后,苹果官方提供了相关的API来实现这个功能,主要是下面这几个方法:

    @interfaceUIApplication(UIAlternateApplicationIcons)// 如果为NO,表示当前进程不支持替换图标@property(readonly, nonatomic) BOOLsupportsAlternateIcons NS_EXTENSION_UNAVAILABLE("Extensions may not have alternate icons") API_AVAILABLE(ios(10.3), tvos(10.2));// 传入nil代表使用主图标. 完成后的操作将会在任意的后台队列中异步执行; 如果需要更改UI,请确保在主队列中执行.- (void)setAlternateIconName:(nullableNSString*)alternateIconName completionHandler:(nullablevoid(^)(NSError*_Nullable error))completionHandler NS_EXTENSION_UNAVAILABLE("Extensions may not have alternate icons") API_AVAILABLE(ios(10.3), tvos(10.2));// 如果alternateIconName为nil,则代表当前使用的是主图标.@property(nullable, readonly, nonatomic) NSString*alternateIconName NS_EXTENSION_UNAVAILABLE("Extensions may not have alternate icons") API_AVAILABLE(ios(10.3), tvos(10.2));@end

    1. 配置icon

    添加图片icon

    动态修改的icon不能放在 Assets.xcassets 里,但是正常的主icon还是可以在这里设置的,也可以按下面的方法来设置;
    首先,把需要修改的icon放在一个文件夹内:

    其文件夹内是这样的

    这里每种icon我只放了一个,如果有多个尺寸的icon,也可以直接全放进去

    配置info.plist

    在info.plist中右键 -> Add Row :
    输入Icon... 会有提示,选择Icon files(iOS 5)

    这时候,内容是这样的:

    这里的Icon files(iOS 5)是个字典,其中可包含的Key值有CFBundlePrimaryIcon -> Primary Icon
    CFBundleAlternateIcons
    UINewsstandIcon -> Newsstand Icon

    这里的Primary Icon是设置app的主icon,可以在这里的Icon files数组内添加,有多个的话,依次添加,也可以这里不用填写,直接在Assets.xcassets 里配置;

    下面的Newsstand Icon,暂时用不到,不用管,也可以删除。
    在 Icon files(iOS 5)内添加一个Key: CFBundleAlternateIcons ,类型为字典,在这个字典里配置我们所有需要动态修改的icon:键为icon的名称,值为一个字典(这个字典里包含两个键:CFBundleIconFiles,其值类型为Array,内容为icon的名称;UIPrerenderedIcon,其值类型为bool,内容为NO,也可以不加此key),例如:


     

    把第一步中添加的图片全部添加进来就是这样的:

    到此,info.plist的配置即完成了;
    或者将info.plist文件以 Source code 方式打开,添加以下代码:

     

    <key>CFBundleIcons</key>
        <dict>
            <key>CFBundleAlternateIcons</key>
            <dict>
                <key>rain</key>
                <dict>
                    <key>CFBundleIconFiles</key>
                    <array>
                        <string>rain</string>
                    </array>
                    <key>UIPrerenderedIcon</key>
                    <false/>
                </dict>
                <key>snow</key>
                <dict>
                    <key>CFBundleIconFiles</key>
                    <array>
                        <string>snow</string>
                    </array>
                    <key>UIPrerenderedIcon</key>
                    <false/>
                </dict>
                <key>sunshine</key>
                <dict>
                    <key>CFBundleIconFiles</key>
                    <array>
                        <string>sunshine</string>
                    </array>
                    <key>UIPrerenderedIcon</key>
                    <false/>
                </dict>
                <key>cloudy</key>
                <dict>
                    <key>CFBundleIconFiles</key>
                    <array>
                        <string>cloudy</string>
                    </array>
                    <key>UIPrerenderedIcon</key>
                    <false/>
                </dict>
            </dict>
            <key>CFBundlePrimaryIcon</key>
            <dict>
                <key>CFBundleIconFiles</key>
                <array>
                    <string></string>
                </array>
                <key>UIPrerenderedIcon</key>
                <false/>
            </dict>
            <key>UINewsstandIcon</key>
            <dict>
                <key>CFBundleIconFiles</key>
                <array>
                    <string></string>
                </array>
                <key>UINewsstandBindingType</key>
                <string>UINewsstandBindingTypeMagazine</string>
                <key>UINewsstandBindingEdge</key>
                <string>UINewsstandBindingEdgeLeft</string>
            </dict>
        </dict>

    如果是添加了多个尺寸icon,也要在这里分别配置,以上面添加的sunshine图标为例:

    使用的时候还是使用sunshine进行赋值即可!

    代码

    配置完成后,代码部分就比较简单了:

    - (void)changeAppIconWithName:(NSString*)iconName {if(![[UIApplicationsharedApplication] supportsAlternateIcons]) {return; }if([iconName isEqualToString:@""]) { iconName = nil; } [[UIApplicationsharedApplication] setAlternateIconName:iconName completionHandler:^(NSError* _Nullable error) {if(error) {NSLog(@"更换app图标发生错误了 : %@",error); } }]; }


    在需要修改icon的地方调用这个方法,并把相应的icon名称传进去即可:

    - (IBAction)snow:(id)sender { [selfchangeAppIconWithName:@"snow"]; } - (IBAction)rain:(id)sender { [selfchangeAppIconWithName:@"rain"]; } - (IBAction)cloudy:(id)sender { [selfchangeAppIconWithName:@"rain"]; } - (IBAction)sunshine:(id)sender { [selfchangeAppIconWithName:@"sunshine"]; }

    示意图:

    设置iPad动态图标

    iPad的动态图标设置和上面步骤基本一样,有的文章说是将 CFBundleIcons 改为 CFBundleIcons~ipad,即:

    但是,在测试中发现,使用上面的key值也是可以实现动态改变的,即不做任何修改,iPhone和iPad使用相同的配置,即:CFBundleIcons。

    去掉更换icon时的弹框

    从上面的示意图可以发现,在设置icon的时候,会有个系统弹框,这样有时候会不太友好,我们可以使用Runtime,对UIViewController进行扩展来隐藏这个弹框:

    // UIViewController+LQNoPresent.h
    #import <UIKit/UIKit.h>

    @interface UIViewController (LQNoPresent)

    @end


    // UIViewController+LQNoPresent.m

    #import "UIViewController+LQNoPresent.h"
    #import <objc/runtime.h>

    @implementation UIViewController (LQNoPresent)

    + (void)load {
        
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            Method presentM = class_getInstanceMethod(self.class, @selector(presentViewController:animated:completion:));
            Method presentSwizzlingM = class_getInstanceMethod(self.class, @selector(lq_presentViewController:animated:completion:));
            
            method_exchangeImplementations(presentM, presentSwizzlingM);
        });
    }

    - (void)lq_presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion {
        
        if ([viewControllerToPresent isKindOfClass:[UIAlertController class]]) {
    //        NSLog(@"title : %@",((UIAlertController *)viewControllerToPresent).title);
    //        NSLog(@"message : %@",((UIAlertController *)viewControllerToPresent).message);
            
            UIAlertController *alertController = (UIAlertController *)viewControllerToPresent;
            if (alertController.title == nil && alertController.message == nil) {
                return;
            }
        }
       
        [self lq_presentViewController:viewControllerToPresent animated:flag completion:completion];
    }
    @end

    这样在切换图标的时候就没有系统的弹框了:

    展开全文
  • IOS 使用IconFont 图标

    2015-10-14 14:03:39
    iOS中使用IconFont,第一步跟自定义字体一样,把字体文件iconfont.ttf(这里是实际自己的自定义文件)文件加到项目中 第二步,在项目的info.plist文件中,添加如图: 第三步,在iOS代码中使用: 以...

    iOS中使用IconFont,第一步跟自定义字体一样,把字体文件iconfont.ttf(这里是实际自己的自定义文件)文件加到项目中


    第二步,在项目的info.plist文件中,添加如图:


    第三步,在iOS代码中使用:

    以UIButton为例,设置字体为自定义字体,大小可以设置文本值为 8 位的 Unicode 字符,打开 demo.html 查找每个图标所对应的 HTML 实体 Unicode 码,比如:

    从x开始取后面的字符串,前面补0够8位,像下面这样用法,

     listBtn.titleLabel.font = [UIFont fontWithName:@"iconfont" size:25];
        [listBtn setTitle:@"\U0000e600" forState:UIControlStateNormal];

    运行就可以看到图片了;

    还可以改变颜色,大小,就把图片当文字一样修改就可以。

    展开全文
  • iOS 10.3 开放了更换 app 图标的 API,核心方法是下面这个:。。每周更新关注:http://weibo.com/hanjunqiang 新浪微博!手机加iOS开发者交流QQ群: 446310206


    1、iOS 10.3 开放了更换 app 图标的 API,核心方法是下面这个:

    [[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(
    
     }];

    这是官方文档,但是你还需要在 info.plist 里面填一些东西才能让它起作用,这部分官方注释内容在这里



    2、 info.plist 如何填写呢?一时可能搞不清楚如何操作,下面做个实例:







    3、具体如下:



    <key>CFBundleIcons</key>
        <dict>
            <key>CFBundleAlternateIcons</key>
            <dict>
                <key>newIcon</key>
                <dict>
                    <key>CFBundleIconFiles</key>
                    <array>
                        <string>newIcon</string>
                    </array>
                    <key>UIPrerenderedIcon</key>
                    <false/>
                </dict>
            </dict>
            <key>CFBundlePrimaryIcon</key>
            <dict>
                <key>CFBundleIconFiles</key>
                <array>
                    <string>Icon60X60</string>
                </array>
            </dict>
        </dict>
    

    如图,Primary Icon 字段写为 Icon60X60 是因为这里 xcassets 里面我只导入了 60pt@2x 和 60pt@3x 的图片资源,这里选为 60 是因为对于 iPhone,60pt 的图片资源图标所需最高质量,更低分辨率的版本系统会自动压缩以展示。

    newIcon 是我的用于替换原生图标的图片资源。文件名需要和 info.plist 中保持一致(注意 info.plist 中用到了两次 "newIcon"),同时这也是你在代码中设置图标时,需要给 API 传入的参数。同样是 60pt@2x 和 60pt@3x 的图片资源,文件不通过 Assets.xcassets 添加进来,而是直接放到目录中。

    如果你需要支持 iPad,建议这里使用 83.5pt(iPad Pro)的图片资源。另外还有些其他关于在 iPad 上替换图标的注意事项,在这里有说明,注意我们这里在 info.plist 里面所用的 key 是 CFBundleIcons,还有另外一个 key 是 CFBundleIcons~ipad

    4、替换图标部分的代码:

    - (void)changeAppIcon
    {
        if ([UIApplication sharedApplication].supportsAlternateIcons) {
            NSLog(@"you can change this app's icon");
        }else{
            NSLog(@"you can not change this app's icon");
            return;
        }
        
        NSString *iconName = [[UIApplication sharedApplication] alternateIconName];
        
        if (iconName) {
            // change to primary icon
            [[UIApplication sharedApplication] setAlternateIconName:nil completionHandler:^(NSError * _Nullable error) {
                if (error) {
                    NSLog(@"set icon error: %@",error);
                }
                NSLog(@"The alternate icon's name is %@",iconName);
            }];
        }else{
            // change to alterante icon
            [[UIApplication sharedApplication] setAlternateIconName:@"newIcon" completionHandler:^(NSError * _Nullable error) {
                if (error) {
                    NSLog(@"set icon error: %@",error);
                }
                NSLog(@"The alternate icon's name is %@",iconName);
            }];
        }
    }

    5、最终效果如下:



    优化:

    很多人就说了,每次都要弹框修改多费劲啊,能不能优化在后台切换icon呢?我的答案是:能!

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        [self runtimeReplaceAlert];
    }
    
    // 利用runtime来替换展现弹出框的方法
    - (void)runtimeReplaceAlert
    {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            Method presentM = class_getInstanceMethod(self.class, @selector(presentViewController:animated:completion:));
            Method presentSwizzlingM = class_getInstanceMethod(self.class, @selector(ox_presentViewController:animated:completion:));
            // 交换方法实现
            method_exchangeImplementations(presentM, presentSwizzlingM);
        });
    }
    
    // 自己的替换展示弹出框的方法
    - (void)ox_presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion {
        
        if ([viewControllerToPresent isKindOfClass:[UIAlertController class]]) {
            NSLog(@"title : %@",((UIAlertController *)viewControllerToPresent).title);
            NSLog(@"message : %@",((UIAlertController *)viewControllerToPresent).message);
            
            // 换图标时的提示框的title和message都是nil,由此可特殊处理
            UIAlertController *alertController = (UIAlertController *)viewControllerToPresent;
            if (alertController.title == nil && alertController.message == nil) { // 是换图标的提示
                return;
            } else {// 其他提示还是正常处理
                [self ox_presentViewController:viewControllerToPresent animated:flag completion:completion];
                return;
            }
        }
        
        [self ox_presentViewController:viewControllerToPresent animated:flag completion:completion];
    }
    
    优化后的效果如下:




    手机加iOS开发者交流QQ群: 446310206

    Demo:GitHub  喜欢记得star一下哦!



    展开全文
  • 在开发阿里数据iOS版客户端的时候,由于项目进度很紧,项目里的所有图标都是用最平常的背景图片方案来实现。而为了要兼容普通屏与Retina屏的设备,苹果要求每个背景图都要以两种尺寸存(a.png和a@2x.png),这让设计师...
  • Demo:更换图标demo,如有问题,请随时联系 需求:换图标,用户无感1.分析: 对于iOS,是开发了API可以换图标,但是有规定的,就是你要换的图标是要在APP里面内置的,也就是说你要换的APPicon,是提前放在APP包...
  • 虽然没有能力开发Native App,但还是可以利用iOS中Safari浏览器的特性小小的折腾一下,做一个伪Web App满足下小小的虚荣心的。 既然是在iOS中的Safari折腾的,那么代码中利用到的也基本上都是Safari的私有属性。 ...
  • 图标(AppIcon)与启动图(LaunchImage)是开发iOS应用程序必不可少的内容,但是在网络上对于这部分的内容讲解的并不详细,所以花些时间写了这篇文章,希望有需要的朋友可以随时查看想知道AppIcon与LaunchImage的...
  • 前言目前使用语音输入越来越普遍。语音输入不仅高效,而且更加自然,符合人类的输入方式。在这里开发了一个汇率换算的 APP,展示了如何使用这个语音识别平台。APP简介这个 APP可以识别用户的输入,然后返回结果,并...
  • 一、下载APP的安装包(ipa) 1,进入Mac电脑的iTunes应用; 2,找到“应用”菜单; 3,选择"App Store"; ...4,在右上角搜索框里输入你想抽图的APP名称,例如"智行火车票";...二、下载完成后进入安装包所在的文夹,文件路径一般...
  • 最近在研究视频播放,所以研究了下这个类,学习的过程中写了个简单的Demo,这里写出来分析给想要的人呢。实现了 透明的导航栏 屏幕垂直的时候小屏幕/水平大屏幕之前的切换,支持屏幕旋转触发,按键触发 重播 播放/...
  • Font的方式来显示一些图标,好处是图标可以被任意缩放、改变颜色,你需要做的只是像修改文字样式那样修改图标样式。   这里就给出了一些图标。具体的可以参见这个网站,有更加...
  • 上篇文章我们详细查看了更换App图标的使用方法,并做了个小Demo。尽管当前我们可以实现动态更换App图标了,但是每次更换图标时,苹果官方给加的“友好提示”对用户以及开发者都不是那么“友好“。官方并没有给出可以...
  • 在开发iOS项目时,不可避免的会用到图标,而为了适配不同分辨率的设备,我们通常会需要@2x,@3x两套格式的图片,最明显的就是底部tabBar的图标使用。而对于那些有换肤需求的APP来说,还需要多套图来匹配不同的主题。...
  • 在不重新安装app的情况下,可以实现更新app的图标。 功能应用场景 白天/夜间模式切换,在切换App主题色的同时修改App图标 各类皮肤主题(淘宝换肤) 图标的促销提示,淘宝京东的双十一、6.18等 该功能当前只支持...
  • 不知道大家注意到没有,iPhone自带的日历和始终App的图标是实时显示当日日期和当时的时间的,时间的秒钟还会走动,这其实就做到了在安装完App后,还能自由地变更App的图标,而现在,我们普通的开发者也可以实现了。...
  • 想让你的App在手机上自由改变App图标
  • 今天给同学讲解一下微博的展示不同的行高,以及一种新的模式!那么废话不多说,直接上代码~   通过代码自定义cell 1&gt; 新建一个继承自UITableViewCell的类 ... 先在initWithStyle:初始化在将有可能显示的子...
  • iOS开发的都知道,因为屏幕分辨率的问题,在iOS app 中都得放两套切图来支持retina屏和非retina屏幕,但是文字就不需要考虑分辨率的问题,所以可不可以将一些图片用文字来代替呢,省时省力省资源。看下面一些截图...
  • iOS允许网站开发者像NativeApp一样在iOS设备的主屏幕为其网站添加一个启动Icon,这个代表着网站的Icon在苹果官方开发者文档里被称为“Web Clip”,它的作用类似于桌面浏览器的书签,用户通过点击Icon能直接快速打开...
1 2 3 4 5 ... 20
收藏数 10,013
精华内容 4,005
关键字:

demo没有图标 ios