IPAD下使用相册横屏异常的解决

news/2024/11/16 9:47:36/

原因大致是由于UIImagePickerController默认支持的是竖屏的原因,实现原理在打开相册前设置屏幕可翻转,关闭相册后设置为横屏模式

解决步骤

1,为 UIImagePickerController 添加类别如下

@interface UIImagePickerController (LandScapeImagePicker)

- (BOOL)shouldAutorotate;

- (NSUInteger)supportedInterfaceOrientations;

@end



#import "UIImagePickerController+LandScapeImagePicker.h"


@implementation UIImagePickerController (LandScapeImagePicker)



- (BOOL)shouldAutorotate {

    return YES;

}


- (NSUInteger)supportedInterfaceOrientations {

    returnUIInterfaceOrientationMaskAll;

}


@end



同时在打开相册控制类中添加如下控制代码



-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info

{

    bAlbumListViewStatus = NO;

    [picker dismissViewControllerAnimated:YES completion:nil];

    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

    

    //[self uploadImageWithImage:image];


    

}

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker

{

     bAlbumListViewStatus = NO;

    [picker dismissViewControllerAnimated:NO completion:nil];

}



弹出相册的地方代码修改如下

  UIImagePickerController *picker = [[UIImagePickerController alloc] init];

    

    picker.delegate         = self;

    picker.sourceType       = sourceType;

    picker.allowsEditing    = YES;

    bAlbumListViewStatus    = YES; //

    [self presentViewController:picker animated:YES completion:nil];




2,在app delegate里添加方向支持


- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

{

    if (bAlbumListViewStatus) //全局变量,定义是否打开相册

        return UIInterfaceOrientationMaskAll;

    else

        return UIInterfaceOrientationMaskLandscapeLeft;


}





完成如上后即可解决了



http://www.ppmy.cn/news/734868.html

相关文章

屏幕色彩空间

其中DCI-P3、sRGB、NTSC、AdobeRGB都是基于CIE色彩空间标准的色彩标准&#xff0c;只是应用的地方有些不同。从下图可以看到&#xff0c;NTSC和sRGB所包含的色彩范围是不太一样的&#xff0c;NTSC所表现的色彩要更多丰富一些&#xff0c;而sRGB所表现的色彩几乎被NTSC所包含&am…

平板如何调色? 手把手教你校正iPad屏幕

过去摄影师或者专业图形制作以及设计人员在完成作品&#xff0c;将其交给客户审阅或与同行之间交流时都会随身带着笔记本电脑。不过由于笔记本电脑体积相对较大&#xff0c;携带起来还依旧有诸多不变&#xff0c;此外笔记本电脑几乎采用的是可视角度很小的TN面板&#xff0c;这…

屏幕色彩管理

&#xff08;文章翻稿自知乎&#xff1a;小7的背包&#xff0c;侵删&#xff09; 定义&#xff1a; 一个可以在设备之间准确地解释和转换颜色的系统。将创建颜色的色彩空间与将输出该颜色的色彩空间进行对比调整&#xff0c;使不同的设备所表现的颜色尽可能一致。&#xff08…

服务器数据库被360后缀勒索病毒攻击怎么办?360勒索病毒的加密形式

近日&#xff0c;我们收到很多企业的求助&#xff0c;企业服务器内的多种数据库被.360后缀的勒索病毒加密&#xff0c;导致企业许多工作无法正常运转&#xff0c;也给企业带来了严重的经济损失。360后缀勒索病毒是一种恶意软件&#xff0c;它属于BeijingCrypt勒索病毒家族&…

实习没成长,想离职了

现在各种实习招聘基本都已经结束了&#xff0c;很多小伙伴成功找到了实习&#xff0c;但依旧很焦虑。 觉得虽然成功进入公司实习&#xff0c;但每天基本就是做增删改查的活&#xff0c;对自身没有提升。所以不知道是不是应该辞职去自学。 刚刚开始&#xff0c;一般来说公司不…

20230425

#include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #include <sqlite3.h> /** function: 插入* param [ in] * param [out] * return */ int do_insert(sqlite3* db) {int ID;char NAME[20];float SCORE;print…

【AMPPZ2014】【BZOJ4146】Divisors

Description 给定一个序列a[1],a[2],…,a[n]。求满足i!j且a[i]|a[j]的二元组(i,j)的个数。 Input 第一行包含一个正整数n(1<n<2000000)&#xff0c;表示序列长度。 第二行包含n个正整数&#xff0c;依次表示a[1],a[2],…,an。 Output 一个整数&#xff0c;即满足条…

luogu 4084

给树的点染色&#xff0c;颜色有3种&#xff0c;相邻的点颜色不同 某些点已经染色 方案数&#xff1f; #include <bits/stdc.h>using namespace std ;const int N1e52,M5*N;#define int long longconst int mod1e97;int f[N][4],n;int nxt[M],go[M],hd[N],all;void add…