美文网首页首页投稿(暂停使用,暂停投稿)
在开发过程中碰到的一些有意思的问题

在开发过程中碰到的一些有意思的问题

作者: kikido | 来源:发表于2017-12-13 15:19 被阅读12次

在iOS开发上已经两年多了,前一阵子因为一些奇怪的需求踩过很多坑(可能是苹果的Bug,也可能是自己的水平不行)。现在闲点下来了,就将这些问题给记录下来,以后忘记的时候可以来翻一翻。

1.

CALayer的坐标系不同于UIView,是以它所在View上的bounds来进行坐标参考的,而不是它的SuperLayer。

2

我们经常会碰到一个需求,在一个UIButton里面图片在上文字在下。我的处理方法是通过获得图片以及文字的size来改变UIButton里面titleEdgeInsetsimageEdgeInsets两个属性的值使得改变图片以及文字的位置,

而title和image必须要调用一次方法才能获得他们的size(估计是因为内部使用了懒加载);

//必须要调用一次titleLabel和imageView才能获得它们的size
button.titleLabel.font = [UIFont systemFontOfSize:15.];
button.imageView.backgroundColor = button.backgroundColor;

CGSize titleSize = button.titleLabel.bounds.size;
CGSize imageSize = button.imageView.bounds.size; 
CGFloat interval = 2.0;
[button setTitleEdgeInsets:UIEdgeInsetsMake(imageSize.height + interval, -(imageSize.width + interval), 0, 0)];
[button setImageEdgeInsets:UIEdgeInsetsMake(0,0, titleSize.height + interval, -(titleSize.width + interval))];

3

通过方法- (PHImageRequestID)requestImageForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(nullable PHImageRequestOptions *)options resultHandler:(void (^)(UIImage *__nullable result, NSDictionary *__nullable info))resultHandler;获得的UIImage,在使用NSData * __nullable UIImageJPEGRepresentation(UIImage * __nonnull image, CGFloat compressionQuality);转换成NSData之后系统内存暴增,一张原图差不多能增加30-40兆的内存,在选择了多张图片之后很容易使系统崩溃。

解决方法就是通过- (PHImageRequestID)requestImageDataForAsset:(PHAsset *)asset options:(nullable PHImageRequestOptions *)options resultHandler:(void(^)(NSData *__nullable imageData, NSString *__nullable dataUTI, UIImageOrientation orientation, NSDictionary *__nullable info))resultHandler这个方法来获取照片,先把NSData数据转换成UIImage,然后使用NSData * __nullable UIImageJPEGRepresentation(UIImage * __nonnull image, CGFloat compressionQuality),这样就不会出现上面说的那个问题了。

待续。。。

相关文章

  • 在开发过程中碰到的一些有意思的问题

    在iOS开发上已经两年多了,前一阵子因为一些奇怪的需求踩过很多坑(可能是苹果的Bug,也可能是自己的水平不行)。现...

  • vue中post请求以 a=a&b=b 的格式

    vue开发过程中,总会碰到一些问题,当然任何问题都不能阻止我们前进的脚步,话不多说,下面是我在开发过程中请求参数所...

  • vue中post请求以 a=a&b=b 的格式

    vue开发过程中,总会碰到一些问题,当然任何问题都不能阻止我们前进的脚步,话不多说,下面是我在开发过程中请求参数所...

  • 企业应用打包及发布

    企业应用很少碰到,开发路上难免碰到磕磕碰碰,下面是本人在开发过程中遇到的一些问题。 1、开发账号 貌似现在不支持直...

  • Python踩坑指南(第一季)

    最近在python开发的过程中,发现了一些比较有意思的问题,确实让自己在开发过程中被恶心了一把,所以开了这个连续的...

  • Vue项目开发笔记

    一、前言 最近在学习Vue开发,在开发过程中或多或少都碰到了一些问题,这里做下笔记,方便查阅 二、问题 1、跨域问...

  • React开发过程中碰到的问题

    1. 控制兄弟元素 用全局的state属性解决,个人认为不是最优解决方式 这样就实现了控制兄弟结点的行为 2. 阻...

  • Handler,Thread的一些记录

    在Android开发的过程中,我们都碰到过一个问题,就是在非UI线程去做一些更新UI操作的时候会抛出如下异常: 这...

  • 【转】python开发之virtualenv与virtualen

    在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题; 亦或者是在开发过程中不...

  • 【vue学习】开发过程中碰到的一些问题

    问题1: Vue 无法读取HTMLCollection列表的length解决 在mounted阶段,获取Eleme...

网友评论

    本文标题:在开发过程中碰到的一些有意思的问题

    本文链接:https://www.haomeiwen.com/subject/mjgaixtx.html