MJPhotoBrowser 两个bug:回到小图模式时会闪动&大图太靠近底部

最近项目需要写网络的相片视频浏览的库, 没时间重写,使用了MJPhotoBrowser,里面的一些bug 和解决写在下面

1.-[MJPhotoLoadingView setProgress:]: message sent to deallocated instance 0x17fe4210

分析:        这是由于MJPhotoView 执行了hide移除了MJPhotoLoadingView,然而SDWebimage 仍然执行了下载进度的设置。

解决方法:最简单的是写个bool值,当响应hide的时候设置为YES,然后

if (!hide) {
                    loading.progress = (float)receivedSize/expectedSize;
                }

2.点击小图进入大图模式以及回到小图模式时会闪动,动画效果不认直视

分析 : 这主要你原本的ImageView的 contenMode 设置问题,注意如果你原来是 UIViewContentModeScaleAspectFill;

则MJPhotoView 的init里面也设置成这个 尔reset里面改为UIViewContentModeScaleAspectFit,UIViewContentModeScaleToFill等,若果还是闪动就多测试几次contenMode
             如果项目中多个地方用到MJPhotoBrowser,而且原Imageview的contenModel不一样,需自己做判断

3. 图片放大时图片太靠近底部的问题

解决:在MJPhotoView里面加上下面代码

- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    CGRect imageViewFrame = _imageView.frame;
    CGRect screenBounds = [UIScreen mainScreen].bounds;
    if (imageViewFrame.size.height > screenBounds.size.height)
    { imageViewFrame.origin.y = 0.0f; }
    else { imageViewFrame.origin.y = (screenBounds.size.height - imageViewFrame.size.height) / 2.0; }
    _imageView.frame = imageViewFrame;
}

方法来自code4app.com  : http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E5%9B%BE%E7%89%87%E6%B5%8F%E8%A7%88%E5%99%A8/525e06116803fa7b0a000001

时间: 2024-11-05 16:02:46

MJPhotoBrowser 两个bug:回到小图模式时会闪动&大图太靠近底部的相关文章

UISearchBar 点击取消回到原来位置时会跳动的解决方法

今天改动项目里面測试给提的bug.有一个bug就是当点击UISearchBar的取消buttonUISearchBar回到原来位置时会发生偏差50像素左右的跳动,细致看看前面几个程序写的那个页面,也没有发现UISearchBar的代理方法 -(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{ } 去网上找了半天,才发现有一个帖子里说在viewDidLoad中加入这么两句代码就能够 [self setAutomaticallyA

android4.4的两个bug

1.Android4.4在解析jpg头的时候使用的库不支持多线程,造成拷贝大量jpg文件的时候出错. step to reproduce. a. Connect PC & DUT via USB cable. b. Settings -> Storage, check with MTP mode. c.copy jpg files to the device.Total size is about 100M. Actual result :Sometimes, the copy will f

两种高效的并发模式(半同步/半异步和领导者/追随者)

一.并发编程与并发模式 并发编程主要是为了让程序同时执行多个任务,并发编程对计算精密型没有优势,反而由于任务的切换使得效率变低.如果程序是IO精密型的,则由于IO操作远没有CPU的计算速度快,所以让程序阻塞于IO操作将浪费大量的CPU时间.如果程序有多个线程,则当前被IO操作阻塞的线程可主动放弃CPU,将执行权转给其它线程.(*IO精密型和cpu精密型可以参考此文:CPU-bound(计算密集型) 和I/O bound(I/O密集型)) 并发编程主要有多线程和多进程,这里我们先讨论并发模式,并发

两种高效的事件处理模式(Proactor和Reactor)

典型的多线程服务器的线程模型 1. 每个请求创建一个线程,使用阻塞式 I/O 操作 这是最简单的线程模型,1个线程处理1个连接的全部生命周期.该模型的优点在于:这个模型足够简单,它可以实现复杂的业务场景,同时,线程个数是可以远大于CPU个数的.然而,线程个数又不是可以无限增大的,为什么呢?因为线程什么时候执行是由操作系统内核调度算法决定的,调度算法并不会考虑某个线程可能只是为了一个连接服务的,时间片到了就执行一下,哪怕这个线程一执行就会不得不继续睡眠.这样来回的唤醒.睡眠线程在次数不多的情况下,

Spring 实现两种设计模式:工厂模式和单态模式

在Spring 中大量使用的以下两种设计模式:工厂模式和单态模式. 工厂模式可将Java 对象的调用者从被调用者的实现逻辑中分离出来,调用者只需关心被调用者必须满足的规则(接口) ,而不必关心实例的具体实现过程.这是面向接口编程的优势,能提高程序的解耦,避免所有的类以硬编码方式耦合在一起. 如果所有的类直接耦合,极易形成"骨牌效应",假如B 类调用了A 类,一旦A 类需要修改,则B 类也需要修改:假如C 类调用了B 类,则C 类也需要修改......依次类推,从而导致整个系统都需要改写

让delphi2010操作界面回到delphi7模式

让delphi2010操作界面回到delphi7模式 在使用delphi2010的过程中,很不习惯它的窗口在一个框框内,感觉很不方便,可能是因为使用delphi7很多年了,已经习惯了delphi7的版面. 如何让delphi2010能有delphi7的版面布局呢?答案是肯定的,方法如下: 1)在工具栏点右键,选择components 会看到delphi7中的组件显示面板 2)tools > options > environment options > vcl designer >

踩到两只“bug”

近期在修复ex和头儿的代码时,碰到两个特别点的bug,其实也不能称之为bug,非常简单的用法,稍不严谨点可能就出错了. 第一个是in_array,大家都知道功能是检查一个值是否在数组中,第三个参数传入true是严格模式检查,比较的时候要求类型一致,问题就在这个严格,比如现在有这么个判断: 可以猜猜是否有输出,结果让人大跌眼镜,竟然打印了.这个非严格模式很有点模糊,当然知道这里不会检查类型,比如官网或者手册上会举若干例子,最典型的就是,数组中有数字字符串,然后判断等值的整型数是否在数组中时,结果为

Mac OS 10.12 - 在VMwear Workstation12.5.2中以两种方式进入恢复模式(Recovery)!!!

注意:如果你打算安装Mac OS10.12 到虚拟机里面学习,那么我强烈建议你在没有安装任何其它软件之气,按照我这篇博客来进入恢复模式(Recovery),禁用Rootless机制!!!这样处理后,你就可以任意使用Mac OS了,否则你最终会发现,你必须进入恢复模式(Recovery),必须禁用Rootless机制才能达到随心所欲使用Mac OS10.12!!!! Mac OS :10.12 VMwear Workstation:12.5.2 我为什么要进入恢复模式?因为Mac OS10.12出

ImageView切换两种状态下的模式

1.xml对ImageView的src要设置成selector <ImageView android:id="@+id/like_icon" android:layout_width="@dimen/will_like_icon_width" android:layout_height="@dimen/will_like_icon_height" android:layout_alignParentLeft="true"