一、程序实现要求

1.要求

201611392120159.png (663×410)

2. 界面分析

(1) 需要读取或修改属性的控件需要设置属性

  • 序号标签
  • 图片
  • 图片描述
  • 左边按钮
  • 右边按钮

(2) 需要监听响应事件的对象,需要添加监听方法

  • 左边按钮
  • 右边按钮

二、实现基本功能的程序

//

//  YYViewController.m

//  03-图片浏览器初步

//

//  Created by apple on 14-5-21.

//  Copyright (c) 2014年 itcase. All rights reserved.

//
#import "YYViewController.h"
#define POTOIMGW    200

#define POTOIMGH    300

#define POTOIMGX    60

#define  POTOIMGY    50


@interface YYViewController ()
//变量声明!

@property(nonatomic,strong)UILabel *firstlab;

@property(nonatomic,strong)UILabel *lastlab;

@property(nonatomic,strong)UIImageView *icon;

@property(nonatomic,strong)UIButton *leftbtn;

@property(nonatomic,strong)UIButton *rightbtn;
-(void)change;

@property(nonatomic ,assign)int i;

@end
@implementation YYViewController
- (void)viewDidLoad

{

    [super viewDidLoad];

    self.i=0;

    //创建一个用来显示序号的lable控件

    UILabel *headlab=[[UILabel alloc]initWithFrame:CGRectMake(20, 10, 300, 30)];

    

  // [headlab setText:@"1/5"];

    [headlab setTextAlignment:NSTextAlignmentCenter];

    [headlab setTextColor:[UIColor blackColor]];

    

    [self.view addSubview:headlab];

    self.firstlab=headlab;

    

    

    

    //创建一个装载图片的控件

    UIImageView *potoimg=[[UIImageView alloc]initWithFrame:CGRectMake(POTOIMGX, POTOIMGY, POTOIMGW, POTOIMGH)];

    

    UIImage *image=[UIImage imageNamed:@"biaoqingdi"];

    potoimg.image=image;

    

    [self.view addSubview:potoimg];

    self.icon=potoimg;

    

    

    

    //创建最下边的描述图片的lable控件

    UILabel *desclab=[[UILabel alloc]initWithFrame:CGRectMake(20, 400, 300, 30)];

   // [desclab setText:@"表情弱爆了!"];

    [desclab setTextAlignment:NSTextAlignmentCenter];

    [self.view addSubview:desclab];

    self.lastlab=desclab;

    

    

    //创建两个方向键按钮

    //设置为自定义类型

    //1.使用类创建对象

    UIButton *leftbtn=[UIButton buttonWithType:UIButtonTypeCustom];

    

    //2.设置对象的属性(不要忘记设置坐标)

    leftbtn.frame=CGRectMake(0, self.view.center.y, 40, 40);

    [leftbtn setBackgroundImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];

    [leftbtn setBackgroundImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];

    

    //3.提交对象到视图

    [self.view addSubview:leftbtn];

    

    self.leftbtn=leftbtn;

    [leftbtn addTarget:self action:@selector(leftclick:) forControlEvents:UIControlEventTouchUpInside];

    

    

    UIButton *rightbtn=[UIButton buttonWithType:UIButtonTypeCustom];

    

    rightbtn.frame=CGRectMake(POTOIMGX POTOIMGW 10, self.view.center.y, 40, 40);

    [rightbtn setBackgroundImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];

    [rightbtn setBackgroundImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];

    

    [self.view addSubview:rightbtn];

    

    self.rightbtn=rightbtn;

    [rightbtn addTarget:self action:@selector(rightclick:) forControlEvents:UIControlEventTouchUpInside];

    

    //这是一个初始化方法,调用change可以完成初始化的工作

    [self change];

}
-(void)change

{

    [self.firstlab setText:[NSString stringWithFormat:@"%d/5",self.i 1]];

    switch (self.i) {

        case 0:

            self.lastlab.text=@"什么表情都弱爆了!";

            self.icon.image=[UIImage imageNamed:@"biaoqingdi"];

            break;

        case 1:

            self.lastlab.text=@"病例";

            self.icon.image=[UIImage imageNamed:@"bingli"];

            break;

        case 2:

           self.lastlab.text=@"王八";

            self.icon.image=[UIImage imageNamed:@"wangba"];

            break;

        case 3:

           self.lastlab.text=@"吃牛扒";

            self.icon.image=[UIImage imageNamed:@"chiniupa"];

            break;

        case 4:

             self.lastlab.text=@"蛋疼!";

            self.icon.image=[UIImage imageNamed:@"danteng"];

            break;

    }

    //控制按钮的点击,如果为5则右键失效,如果为1,则左键失效

    self.leftbtn.enabled=(self.i!=0);

    self.rightbtn.enabled=(self.i!=4);
}
//向右按键

-(void)rightclick:(UIButton *)btn

{

    self.i  ;

    [self change];

    //NSLog(@"点我了");

}

-(void)leftclick:(UIButton *)btn

{

    self.i--;

    [self change];

}

- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}
@end

三、程序优化
//

//  YYViewController.m

//  03-图片浏览器初步

//

//  Created by apple on 14-5-21.

//  Copyright (c) 2014年 itcase. All rights reserved.

//
#import "YYViewController.h"
#define POTOIMGW    200

#define POTOIMGH    300

#define POTOIMGX    60

#define  POTOIMGY    50


@interface YYViewController ()
//变量声明!

@property(nonatomic,strong)UILabel *firstlab;

@property(nonatomic,strong)UILabel *lastlab;

@property(nonatomic,strong)UIImageView *icon;

@property(nonatomic,strong)UIButton *leftbtn;

@property(nonatomic,strong)UIButton *rightbtn;
@property(nonatomic,strong)NSArray *array;
-(void)change;

@property(nonatomic ,assign)int i;

@end

@implementation YYViewController
- (void)viewDidLoad

{

    [super viewDidLoad];

    self.i=0;

    //创建一个用来显示序号的lable控件

    UILabel *headlab=[[UILabel alloc]initWithFrame:CGRectMake(20, 10, 300, 30)];

    

  // [headlab setText:@"1/5"];

    [headlab setTextAlignment:NSTextAlignmentCenter];

    [headlab setTextColor:[UIColor blackColor]];

    

    [self.view addSubview:headlab];

    self.firstlab=headlab;

    

    

    

    //创建一个装载图片的控件

    UIImageView *potoimg=[[UIImageView alloc]initWithFrame:CGRectMake(POTOIMGX, POTOIMGY, POTOIMGW, POTOIMGH)];

    

    UIImage *image=[UIImage imageNamed:@"biaoqingdi"];

    potoimg.image=image;

    

    [self.view addSubview:potoimg];

    self.icon=potoimg;

    

    

    

    //创建最下边的描述图片的lable控件

    UILabel *desclab=[[UILabel alloc]initWithFrame:CGRectMake(20, 400, 300, 30)];

   // [desclab setText:@"表情弱爆了!"];

    [desclab setTextAlignment:NSTextAlignmentCenter];

    [self.view addSubview:desclab];

    self.lastlab=desclab;

    

    

    

    //创建两个方向键按钮

    //设置为自定义类型

    //1.使用类创建对象

    UIButton *leftbtn=[UIButton buttonWithType:UIButtonTypeCustom];

    

    //2.设置对象的属性(不要忘记设置坐标)

    leftbtn.frame=CGRectMake(0, self.view.center.y, 40, 40);

    [leftbtn setBackgroundImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];

    [leftbtn setBackgroundImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];

    

    //3.提交对象到视图

    [self.view addSubview:leftbtn];

    

    self.leftbtn=leftbtn;

    [leftbtn addTarget:self action:@selector(leftclick:) forControlEvents:UIControlEventTouchUpInside];

    

    

    UIButton *rightbtn=[UIButton buttonWithType:UIButtonTypeCustom];

    

    rightbtn.frame=CGRectMake(POTOIMGX POTOIMGW 10, self.view.center.y, 40, 40);

    [rightbtn setBackgroundImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];

    [rightbtn setBackgroundImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];

    

    [self.view addSubview:rightbtn];

    

    self.rightbtn=rightbtn;

    [rightbtn addTarget:self action:@selector(rightclick:) forControlEvents:UIControlEventTouchUpInside];

    //放在这里的话,只会创建一次,但是这个部分和[self change];部分有很严格的顺序要求,并不人性化,可以考虑使用懒加载特性

//    NSDictionary *dict1=@{@"name": @"biaoqingdi",@"desc":@"什么表情都弱爆了!"};

//    NSDictionary *dict2=@{@"name": @"bingli",@"desc":@"病例"};

//    NSDictionary *dict3=@{@"name": @"wangba",@"desc":@"乌龟"};

//    NSDictionary *dict4=@{@"name": @"chiniupa",@"desc":@"吃牛扒"};

//    NSDictionary *dict5=@{@"name": @"danteng",@"desc":@"蛋疼"};

//    

//    self.array=@[dict1,dict2,dict3,dict4,dict5];

    //这是一个初始化方法,调用change可以完成初始化的工作

    [self change];

}
-(void)change

{

    //每次调用都需要创建?有没有什么解决办法?

//    NSDictionary *dict1=@{@"name": @"biaoqingdi",@"desc":@"什么表情都弱爆了!"};

//    NSDictionary *dict2=@{@"name": @"bingli",@"desc":@"病例"};

//    NSDictionary *dict3=@{@"name": @"wangba",@"desc":@"乌龟"};

//    NSDictionary *dict4=@{@"name": @"chiniupa",@"desc":@"吃牛扒"};

//    NSDictionary *dict5=@{@"name": @"danteng",@"desc":@"蛋疼"};

//    

//    NSArray *array=@[dict1,dict2,dict3,dict4,dict5];

    

    

    //设置照片

    //先根据self.i取出数组中的元素,再取出元素(字典)中键值对应的值

//    self.icon.image=[UIImage imageNamed:array[self.i][@"name"]];

//    self.lastlab.text=array[self.i][@"desc"];

   // NSLog(@"%@",array[self.i][@"desc"]);

    

    self.icon.image=[UIImage imageNamed:self.array[self.i][@"name"]];

    self.lastlab.text=self.array[self.i][@"desc"];

    

    [self.firstlab setText:[NSString stringWithFormat:@"%d/5",self.i 1]];

    

//    switch (self.i) {

//        case 0:

//            self.lastlab.text=@"什么表情都弱爆了!";

//            self.icon.image=[UIImage imageNamed:@"biaoqingdi"];

//            break;

//        case 1:

//            self.lastlab.text=@"病例";

//            self.icon.image=[UIImage imageNamed:@"bingli"];

//            break;

//        case 2:

//           self.lastlab.text=@"王八";

//            self.icon.image=[UIImage imageNamed:@"wangba"];

//            break;

//        case 3:

//           self.lastlab.text=@"吃牛扒";

//            self.icon.image=[UIImage imageNamed:@"chiniupa"];

//            break;

//        case 4:

//             self.lastlab.text=@"蛋疼!";

//            self.icon.image=[UIImage imageNamed:@"danteng"];

//            break;

//    }

    //控制按钮的点击,如果为5则右键失效,如果为1,则左键失效

    self.leftbtn.enabled=(self.i!=0);

    self.rightbtn.enabled=(self.i!=4);
}
//array的get方法

-(NSArray *)array

{

    NSLog(@"需要获取数组");

    //只实例化一次

    if (_array==nil) {

        NSLog(@"实例化数组");

        NSDictionary *dict1=@{@"name": @"biaoqingdi",@"desc":@"什么表情都弱爆了!"};

        NSDictionary *dict2=@{@"name": @"bingli",@"desc":@"病例"};

        NSDictionary *dict3=@{@"name": @"wangba",@"desc":@"乌龟"};

        NSDictionary *dict4=@{@"name": @"chiniupa",@"desc":@"吃牛扒"};

        NSDictionary *dict5=@{@"name": @"danteng",@"desc":@"蛋疼"};

        _array=@[dict1,dict2,dict3,dict4,dict5];

    }

//    NSDictionary *dict1=@{@"name": @"biaoqingdi",@"desc":@"什么表情都弱爆了!"};

//    NSDictionary *dict2=@{@"name": @"bingli",@"desc":@"病例"};

//    NSDictionary *dict3=@{@"name": @"wangba",@"desc":@"乌龟"};

//    NSDictionary *dict4=@{@"name": @"chiniupa",@"desc":@"吃牛扒"};

//    NSDictionary *dict5=@{@"name": @"danteng",@"desc":@"蛋疼"};

    

   // _array=@[dict1,dict2,dict3,dict4,dict5];

    return _array;

}
//向右按键

-(void)rightclick:(UIButton *)btn

{

    self.i  ;

    [self change];

}
//向左按键

-(void)leftclick:(UIButton *)btn

{

    self.i--;

    [self change];

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

}
@end

说明:

1> 定义控件属性,注意:属性必须是strong的,示例代码如下:

@property (nonatomic, strong) UIImageView *icon;

2> 在属性的getter方法中实现懒加载,示例代码如下:
- (UIImageView *)icon
{
    if (!_icon) {
        // 计算位置参数
        CGFloat imageW = 200;
        CGFloat imageX = (320 - imageW) / 2;
        CGFloat imageH = 200;
        CGFloat imageY = 80;
        // 实例化图像视图
        _icon = [[UIImageView alloc] initWithFrame:CGRectMake(imageX, imageY, imageW, imageH)];
        // 将图像视图添加到主视图
        [self.view addSubview:_icon];
    }
    return _icon;
}

四、使用plist文件

(1)使用Plist文件的目的:将数据与代码分离

(2)加载方法:

NSString *path = [[NSBundle mainBundle] pathForResource:@"ImageData" ofType:@"plist"];
_imageList = [NSArray arrayWithContentsOfFile:path];

提示:通常在方法中出现File字眼,通常需要传递文件的全路径作为参数

(3)代码示例

//

//  YYViewController.m

//  03-图片浏览器初步

//

//  Created by apple on 14-5-21.

//  Copyright (c) 2014年 itcase. All rights reserved.

//
#import "YYViewController.h"
#define POTOIMGW    200

#define POTOIMGH    300

#define POTOIMGX    60

#define  POTOIMGY    50


@interface YYViewController ()
//变量声明!

@property(nonatomic,strong)UILabel *firstlab;

@property(nonatomic,strong)UILabel *lastlab;

@property(nonatomic,strong)UIImageView *icon;

@property(nonatomic,strong)UIButton *leftbtn;

@property(nonatomic,strong)UIButton *rightbtn;
@property(nonatomic,strong)NSArray *array;
-(void)change;

@property(nonatomic ,assign)int i;

@end

@implementation YYViewController
- (void)viewDidLoad

{

    [super viewDidLoad];

    self.i=0;

    //创建一个用来显示序号的lable控件

    UILabel *headlab=[[UILabel alloc]initWithFrame:CGRectMake(20, 10, 300, 30)];

    

  // [headlab setText:@"1/5"];

    [headlab setTextAlignment:NSTextAlignmentCenter];

    [headlab setTextColor:[UIColor blackColor]];

    

    [self.view addSubview:headlab];

    self.firstlab=headlab;

    

    

    

    //创建一个装载图片的控件

    UIImageView *potoimg=[[UIImageView alloc]initWithFrame:CGRectMake(POTOIMGX, POTOIMGY, POTOIMGW, POTOIMGH)];

    

    UIImage *image=[UIImage imageNamed:@"biaoqingdi"];

    potoimg.image=image;

    

    [self.view addSubview:potoimg];

    self.icon=potoimg;

    

    //创建最下边的描述图片的lable控件

    UILabel *desclab=[[UILabel alloc]initWithFrame:CGRectMake(20, 400, 300, 30)];

   // [desclab setText:@"表情弱爆了!"];

    [desclab setTextAlignment:NSTextAlignmentCenter];

    [self.view addSubview:desclab];

    self.lastlab=desclab;

    

    

    //创建两个方向键按钮

    //设置为自定义类型

    //1.使用类创建对象

    UIButton *leftbtn=[UIButton buttonWithType:UIButtonTypeCustom];

    

    //2.设置对象的属性(不要忘记设置坐标)

    leftbtn.frame=CGRectMake(0, self.view.center.y, 40, 40);

    [leftbtn setBackgroundImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];

    [leftbtn setBackgroundImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];

    

    //3.提交对象到视图

    [self.view addSubview:leftbtn];

    

    self.leftbtn=leftbtn;

    [leftbtn addTarget:self action:@selector(leftclick:) forControlEvents:UIControlEventTouchUpInside];

    

    

    UIButton *rightbtn=[UIButton buttonWithType:UIButtonTypeCustom];

    

    rightbtn.frame=CGRectMake(POTOIMGX POTOIMGW 10, self.view.center.y, 40, 40);

    [rightbtn setBackgroundImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];

    [rightbtn setBackgroundImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];

    

    [self.view addSubview:rightbtn];

    

    self.rightbtn=rightbtn;

    [rightbtn addTarget:self action:@selector(rightclick:) forControlEvents:UIControlEventTouchUpInside];

    [self change];

}
-(void)change

{

    self.icon.image=[UIImage imageNamed:self.array[self.i][@"name"]];

    self.lastlab.text=self.array[self.i][@"desc"];

    

    [self.firstlab setText:[NSString stringWithFormat:@"%d/5",self.i 1]];

    

    self.leftbtn.enabled=(self.i!=0);

    self.rightbtn.enabled=(self.i!=4);
}
//array的get方法

-(NSArray *)array

{

    NSLog(@"需要获取数组");

    //只实例化一次

    if (_array==nil) {

     

        NSString *path=[[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];

        //数组的数据从文件获取

       // _array=[NSArray arrayWithContentsOfFile:path];

        _array=[[NSArray alloc]initWithContentsOfFile:path];

        //打印查看包的位置

        NSLog(@"%@",path);

        

       NSLog(@"实例化数组");

    }
    return _array;

}
//向右按键

-(void)rightclick:(UIButton *)btn

{

    self.i  ;

    [self change];

}
//向左按键

-(void)leftclick:(UIButton *)btn

{

    self.i--;

    [self change];

}
- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

}
@end

(4)plist文件

201611392221000.png (868×338)

(5)实现效果

201611392239226.png (640×960)

五、补充

开发思路:

1.完成基本功能

2.考虑性能

(1)(初始化操作,可以直接调用change进行)

(2)因为要控制序号和图片两个变量,所以考虑使用字典代替掉switch

(3)每次点击,字典都需要创建一次,效率地下,可以考虑创建的这部分拿到初始化方法中去,这样就只需要创建一次就ok了。

(4)考虑缺点(对代码的顺序要求极其严格)

(5)懒加载(需要的时候才加载,那么什么时候是需要的时候,及调用get方法的时候)

(6)每次都来一下?效率低下—》只有第一次调用get方法时为空,此时实例化并建立数组,其他时候直接返回成员变量(仅仅执行一次)

注意点:

1.方法的调用堆栈(顺序)。

2.使用plist:让数据的操作更加灵活,把数据弄到外面去,解除耦合性,让耦合性不要太强。实际上是一个xml,是苹果定义的一种特殊格式的xml。

3.bundle-包(只读)

iOS开发中实现一个简单的图片浏览器的实例讲解的更多相关文章

  1. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  2. HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题

    HTML5在微信内置浏览器下,在右上角菜单的调整字体导致页面显示错乱的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

  3. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  4. ios – containerURLForSecurityApplicationGroupIdentifier:在iPhone和Watch模拟器上给出不同的结果

    我使用默认的XCode模板创建了一个WatchKit应用程序.我向iOSTarget,WatchkitAppTarget和WatchkitAppExtensionTarget添加了应用程序组权利.(这是应用程序组名称:group.com.lombax.fiveminutes)然后,我尝试使用iOSApp和WatchKitExtension访问共享文件夹URL:延期:iOS应用:但是,测试NSURL

  5. ios – Testflight无法安装应用程序

    我有几个测试人员注册了testflight并连接了他们的设备……他们有不同的ios型号……但是所有这些都有同样的问题.当他们从“safari”或“testflight”应用程序本身单击应用程序的安装按钮时……达到约90%并出现错误消息…

  6. ibm-mobilefirst – 在iOS 7.1上获取“无法安装应用程序,因为证书无效”错误

    当我的客户端将他们的设备更新到iOS7.1,然后尝试从AppCenter更新我们的应用程序时,我收到了上述错误.经过一番搜索,我找到了一个类似问题的帖子here.但是后来因为我在客户端使用AppCenter更新应用程序的环境中,我无法使用USB插件并为他们安装应用程序.在发布支持之前,是否有通过AppCenter进行下载的解决方法?

  7. ios – 视图的简单拖放?

    我正在学习iOS,但我找不到如何向UIView添加拖放行为.我试过了:它说“UIView没有可见的接口声明选择器addTarget”此外,我尝试添加平移手势识别器,但不确定这是否是我需要的它被称为,但不知道如何获得事件的坐标.在iOS中注册移动事件回调/拖放操作的标准简单方法是什么?

  8. ios – 什么控制iTunes中iPhone应用程序支持的语言列表?

    什么控制iPhone应用程序的iTunes页面中支持的语言?

  9. ios – 获得APNs响应BadDeviceToken或Unregistered的可能原因是什么?

    我知道设备令牌在某些时候是有效的.用户如何使其设备令牌变坏?从关于“未注册”的文档:Thedevicetokenisinactiveforthespecifiedtopic.这是否意味着应用程序已被删除?.您应该看到四种分发方法:如果您选择AppStore或Enterprise,您将在后面的对话框中看到Xcode将APNS权利更改为生产:如果选择AdHoc或Development,则aps-environment下的文本将是开发,然后应与后端的配置匹配.

  10. ios – 当我关闭应用程序时,我从调试器获得消息:由于信号15而终止

    我怎么能解决这个问题,我不知道这个链接MypreviousproblemaboutCoredata对我的问题有影响吗?当我cmd应用程序的Q时,将出现此消息.Messagefromdebugger:Terminatedduetosignal15如果谁知道我以前的问题的解决方案,请告诉我.解决方法>来自调试器的消息:每当用户通过CMD-Q(退出)或STOP手动终止应用程序(无论是在iOS模拟器中还是

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部