首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏iOS 开发

    iOS 加载图片imageNamed 和 imageWithContentsOfFile区别

    Apple官方的文档为生成一个UIImage对象提供了两种方法: imageNamed,其参数为图片的名字; [UIImage imageNamed:ImageName]; imageWithContentsOfFile 用imageNamed的方式加载时,会把图像数据根据它的名字缓存在系统内存中,以提高imageNamed方法获得相同图片的image对象的性能。

    1.7K40发布于 2018-06-05
  • 来自专栏我只不过是出来写写iOS

    imageNamed与dataWithContentOfFile加载图片的区别

    1、使用imageNamed函数: [UIImage imageNamed:@"ImageName"]; 2、使用NSData方式加载: NSString *filePath = [[NSBundle 但是利 用imageNamed加载图像也有自己的优势。对于同一个图像系统只会把它Cache到内存一次,这对于图像的重复利用是非常有优势的。 例如:你需要在 一个TableView里重复加载同样一个图标,那么用imageNamed加载图像,系统会把那个图标Cache到内存,在Table里每次利用那个图 像的时候,只会把图片指针指向同一块内存。 这种情况使用imageNamed加载图像就会变得非常有效。 利用NSData方式加载时,图像会被系统以数据方式加载到程序。 当图片数量多时,效率会比imageNamed低,加载速度明显变慢。 无论用哪种方式加载图像,图像使用结束后,一定要记得显示释放内存。

    59540发布于 2019-04-02
  • 来自专栏macOS 开发学习

    Mac开发跬步积累(一):Cocoa Drawing 之 NSImage imageNamed: 到底做了什么?

    使用独立的窗口进行缓存是更有效率的选择(调用NSImage的setCachedSeparately:方法设置独立缓存), Load Named Image ok~铺垫了这么多之后,我们再来看一下最初的问题:当我们调用NSImage的imageNamed 使用imageNamed: 重复加载时,都会获得同一个图片对象: let img1 = NSImage(named: NSImage.Name.init("youwin"))!

    1.7K30发布于 2018-08-23
  • 来自专栏iOS122-移动混合开发研究院

    实现iOS图片等资源文件的热更新化(二):自定义的动态 imageNamed

    这篇文章,要解决的是,使用一个自定义的 imageNamed 函数来替代系统的 imageNamed 函数.内部逻辑,将贯穿对比论证 关于"合适"的图片的定义.对iOS加载图片的规则不是很熟悉的童鞋,可以着重看这篇 NSLog(@"加载后的图片尺寸:%@",[NSValue valueWithCGSize:self.sampleImageView.image.size]); 封装为类目(category),实现自定义的 imageNamed 此处实现了一个简单够用的类目方法,支持从指定bundle读取指定名字的图片: #import "UIImage+imageNamed_bundle_.h" @implementation UIImage (imageNamed_bundle_) + (UIImage *)imageNamed:(NSString *)imgName bundle:(NSString *)bundleName { bundle:@"main"]; self.sampleImageView.image = image; 也支持有层级结构的图片资源的读取呦: UIImage * image = [UIImage imageNamed

    1.4K60发布于 2018-01-02
  • 来自专栏Objective-C

    iOS-修改系统 TabbarItem 图片、文字颜色

    initWithRootViewController:vcHome]; vcHome.title = @"首页"; vcHome.tabBarItem.image = [UIImage imageNamed initWithRootViewController:vcHome]; vcHome.title = @"首页"; vcHome.tabBarItem.image = [UIImage imageNamed @"tabbar_home"]; // 设置 tabbarItem 选中状态的图片(不被系统默认渲染,显示图像原始颜色) UIImage *imageHome = [UIImage imageNamed initWithRootViewController:vcHome]; vcHome.title = @"首页"; vcHome.tabBarItem.image = [UIImage imageNamed :image]; // 设置 tabbarItem 选中状态的图片(不被系统默认渲染,显示图像原始颜色) UIImage *imageHome = [UIImage imageNamed

    4.4K110发布于 2018-05-10
  • 来自专栏编程之旅

    iOS开发——Debug CUICatalog: Invalid asset name supplied: (null)

    log出了一个错误 CUICatalog:Invalid asset name supplied: (null), Google了一下在StackOverflow上各位大神说应该是[UIImage imageNamed 需要解决的问题是查找所有[UIImage imageNamed:]调用的时候, 找到name是nil的地方, 但是整个项目一搜 imageNamed 显示 267 results in 117 files 一开始想到的是用Method Swizzle来修改[UIImage imageNamed:]的实现, 在name为nil的时候用断言, 查看调用栈. 但是想想写了debug之后还得删掉, 比较麻烦. 右键选择Breakpoint选择 Edit Breakpoint , 在Symbol填入[UIImage imageNamed:] , 在Condition填入 [(NSString *)$arg3 length 打开Debug Navigator观察调用栈, 最顶部的一定是[UIImage imageNamed:], 点击调用栈下一条, 能够看到有调用到imageNamed的代码, 就是name为nil的地方.

    3K30发布于 2018-08-30
  • 来自专栏我和未来有约会

    ios开发基础知识 - 1

    UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect]; [myImage setImage:[UIImage imageNamed app.networkActivityIndicatorVisible = YES; 播放序列动画 NSArray *myImages = [NSArray arrayWithObjects: [UIImage imageNamed :@"myImage1.png"], [UIImage imageNamed:@"myImage2.png"], [UIImage imageNamed:@"myImage3.png "], [UIImage imageNamed:@"myImage4.gif"], nil]; UIImageView *myAnimatedView = [UIImageView

    76770发布于 2018-01-16
  • 来自专栏日常技术分享

    iOS[UIImage imageNamed:]生成的对象释放时机

    如果使用imageNamed这个方法加载一些比较大的资源文件就容易崩溃,从而引发了imageNamed生成的对象什么时候释放? 使用imageNamed这个方法生成的UIImage对象,会在应用的bundle中寻找图片,如果找到,则Cache到系统缓存中,作为内存的cache,而程序员是无法操作cache的,只能由系统自动处理, 由此看来[UIImage imageNamed:]只适合与UI界面中小的贴图的读取,而一些比较大的资源文件应该尽量避免使用这个接口[UIImage imageWithContentsOfFile]解决掉这个问题 for (int i = 0; i < 1000; i++) { UIImage* image = [UIImage imageNamed:@"some_image"]; // 对 image 为了解决这个问题,可以改成这样: for (int i = 0; i < 1000; i++) { @autoreleasepool { UIImage* image = [UIImage imageNamed

    1.6K20发布于 2019-03-11
  • 来自专栏DannyHoo的专栏

    不同的网络下下载不同的图片

            [_picV sd_setImageWithURL:[NSURL URLWithString:_topicModel.image1] placeholderImage:[UIImage imageNamed             [_picV sd_setImageWithURL:[NSURL URLWithString:_topicModel.image1] placeholderImage:[UIImage imageNamed                  [_picV sd_setImageWithURL:[NSURL URLWithString:_topicModel.image0] placeholderImage:[UIImage imageNamed                 [_picV sd_setImageWithURL:[NSURL URLWithString:_topicModel.image0] placeholderImage:[UIImage imageNamed             }else{ // 如果没有小图使用占位图                 [_picV sd_setImageWithURL:nil placeholderImage:[UIImage imageNamed

    1.5K30发布于 2018-09-13
  • 来自专栏iOS知识点

    iOS TabBarController实例

    BaseNavigationController *nav = [[BaseNavigationController alloc] init]; [nav.tabBarItem setImage:[[UIImage imageNamed imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; [nav.tabBarItem setSelectedImage:[[UIImage imageNamed imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]]; [nav.tabBarItem setImage:[[UIImage imageNamed UIBarButtonItemStyleDone target:self action:@selector(backIndex)]; [buttonItem setImage:[UIImage imageNamed UIButton *leftBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [leftBtn setImage:[UIImage imageNamed

    68920发布于 2019-12-18
  • 来自专栏全栈程序员必看

    iOS结合导航控制器和标签栏控制器

    CGSizeMake(25, 25)] tag:0]; [itemHomePage setFinishedSelectedImage:[UIImage imageWithImage:[UIImage imageNamed jpg"] scaledToSize:CGSizeMake(25, 25)] withFinishedUnselectedImage:[UIImage imageWithImage:[UIImage imageNamed itemShoppingCart= [[UITabBarItem alloc] initWithTitle:@"我的购物车" image:[UIImage imageWithImage:[UIImage imageNamed jpg"] scaledToSize:CGSizeMake(25, 25)] withFinishedUnselectedImage:[UIImage imageWithImage:[UIImage imageNamed jpg"] scaledToSize:CGSizeMake(25, 25)] withFinishedUnselectedImage:[UIImage imageWithImage:[UIImage imageNamed

    92210编辑于 2022-07-06
  • 来自专栏花落的技术专栏

    IOS 列表性能优化-图片解码性能优化

    imageName = [NSString stringWithFormat:@"backImage%ld",(long)index]; //UIImage *image = [UIImage imageNamed 一种是: UIImage imageNamed:imageName 一种是: UIImage imageWithContentsOfFile:path 后面我再解释为什么需要对比这两种加载方式, 1>使用UIImage imageWithContentsOfFile:path image.png 2>使用UIImage imageNamed:imageName image.png 两种方式都实际滑动一分钟 , 可以清晰的看到,两种加载方式一开始都帧数很低,但是使用imageNamed: 的很快帧数就恢复到60帧,但是使用imageWithContentsOfFile:会一直卡顿,那是因为使用imageNamed 再来解释我们使用的两种加载方式,使用 imageWithContentsOfFile: 实际上是模拟网络下载图片到本地后,再从本地加载展示图片的过程,imageNamed:方式则是模拟从Assets.xcassets

    2.3K00发布于 2021-11-21
  • 来自专栏月亮与二进制

    《Motion Design for iOS》(三十六)

    [[UIImageView alloc] initWithFrame:CGRectMake(0, 170, windowWidth, 80)]; firstRow.image = [UIImage imageNamed UIImageView alloc] initWithFrame:CGRectMake(0, 170+80, windowWidth, 80)]; secondRow.image = [UIImage imageNamed UIImageView alloc] initWithFrame:CGRectMake(0, 170+160, windowWidth, 80)]; thirdRow.image = [UIImage imageNamed UIImageView alloc] initWithFrame:CGRectMake(0, 170+240, windowWidth, 80)]; fourthRow.image = [UIImage imageNamed UIImageView alloc] initWithFrame:CGRectMake(0, 170+320, windowWidth, 80)]; fifthRow.image = [UIImage imageNamed

    79420发布于 2021-11-23
  • 来自专栏蜉蝣禅修之道

    关于iOS Tabbar的一些设置

    recognize-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];; item0.image = [[UIImage imageNamed imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; item1.selectedImage = [[UIImage imageNamed @"life-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];; item1.image = [[UIImage imageNamed @"edit-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];; item2.image = [[UIImage imageNamed setting-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];; item3.image = [[UIImage imageNamed

    1.6K40发布于 2018-05-23
  • 来自专栏iOS122-移动混合开发研究院

    AwesomeMenu,仿Path主菜单效果

    实例下载: 最新源代码点击下载 用法简介: 通过创建菜单各个单元项来创建菜单: UIImage *storyMenuItemImage = [UIImage imageNamed:@"bg-menuitem.png "]; UIImage *storyMenuItemImagePressed = [UIImage imageNamed:@"bg-menuitem-highlighted.png"]; UIImage *starImage = [UIImage imageNamed:@"icon-star.png"]; AwesomeMenuItem *starMenuItem1 = [[AwesomeMenuItem AwesomeMenuItem *startItem = [[AwesomeMenuItem alloc] initWithImage:[UIImage imageNamed:@"bg-addbutton.png "] ContentImage:[UIImage imageNamed:@"icon-plus.png

    78760发布于 2018-01-02
  • 来自专栏iOS开发~

    iOS_自定义UITabBarController标签视图控制器

    UIButton *findBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [findBtn setImage:[UIImage imageNamed :@"icon_home_n"] forState:UIControlStateNormal]; [findBtn setImage:[UIImage imageNamed:@"icon_home_h UIButton *searchBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [searchBtn setImage:[UIImage imageNamed :@"icon_search_n"] forState:UIControlStateNormal]; [searchBtn setImage:[UIImage imageNamed:@"icon_search_h UIButton *costBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [costBtn setImage:[UIImage imageNamed

    91530编辑于 2022-07-20
  • 来自专栏移动端开发

    iOS9.0 友盟分享详细过程

    :@"更多分享" itemTitles:@[ @"新浪微博", @"腾讯微博", @"微信", @"朋友圈",@"QQ", @"QQ空间", @"我信朋友圈"] images:@[ [UIImage imageNamed [UIImage imageNamed [UIImage imageNamed [UIImage imageNamed [UIImage imageNamed

    947100发布于 2018-01-09
  • 来自专栏Python疯子

    iOS 单选按钮组--只能而且必选一个按钮

    UIButtonTypeCustom)]; _sinaButton.frame = CGRectMake(30, 200, 15, 15); [_sinaButton setBackgroundImage:[UIImage imageNamed :@"invest_delecte"] forState:(UIControlStateNormal)]; [_sinaButton setBackgroundImage:[UIImage imageNamed sinaButton.bottom + 20, _sinaButton.width, _sinaButton.height); [_bankButton setBackgroundImage:[UIImage imageNamed :@"invest_delecte"] forState:(UIControlStateNormal)]; [_bankButton setBackgroundImage:[UIImage imageNamed

    5.4K20发布于 2018-09-06
  • 来自专栏每日一篇技术文章

    SceneKit_入门07_几何体

    SCNPlane *plane =[SCNPlane planeWithWidth:2 height:2]; plane.firstMaterial.diffuse.contents = [UIImage imageNamed SCNPyramid pyramidWithWidth:1 height:1 length:1]; pyramid.firstMaterial.diffuse.contents = [UIImage imageNamed SCNSphere *sphere = [SCNSphere sphereWithRadius:1]; sphere.firstMaterial.diffuse.contents = [UIImage imageNamed [SCNCylinder cylinderWithRadius:1 height:2]; cylinder.firstMaterial.diffuse.contents = [UIImage imageNamed = [SCNTorus torusWithRingRadius:1 pipeRadius:0.5]; torus.firstMaterial.diffuse.contents = [UIImage imageNamed

    1.1K20编辑于 2022-05-13
  • 来自专栏DannyHoo的专栏

    标签栏代码

    customizeTabBarForController:(RDVTabBarController *)tabBarController {     UIImage *finishedImage = [UIImage imageNamed :@"tabbar_selected_background"];     UIImage *unfinishedImage = [UIImage imageNamed:@"tabbar_normal_background setBackgroundSelectedImage:finishedImage withUnselectedImage:unfinishedImage];         UIImage *selectedimage = [UIImage imageNamed                                                       [tabBarItemImages objectAtIndex:index]]];         UIImage *unselectedimage = [UIImage imageNamed

    76010发布于 2018-09-13
领券