1、事先准备若干图片。

2、效果图:


3、控件:UIlabel,UIImageView,UIButton

4、建好的pic.plist 文件如下:


5、代码如下:

import UIKit

class ViewController: UIViewController {
    
   
    ///---资源数组
    var pic:NSArray!;
    ///--索引
    var index:Int = 0;

    @IBOutlet weak var backBtn: UIButton!
    @IBOutlet weak var imageview: UIImageView!
    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var topLabel: UILabel!
    
    
    @IBOutlet weak var nextBtn: UIButton!
    
    
    
    @IBAction func backBtnClick(sender: AnyObject) {
        
        ///---索引--
        index--;
        if(index >= 0)
        {
            if (index == 0)
            {
                backBtn.enabled = false;
                nextBtn.enabled = true;
            }
            ///---1、从数组中获取当前索引对应的图片数据
            let dic = pic[index];
            
            ///---2、将数据设置到控件上
            topLabel.text = "\(index+1)/\(pic.count)";
            
            let i = dic["icon"]!;
            imageview.image = UIImage(named:"\(i!)");
            let s = dic["label"]!;
            label.text = "\(s!)";
        }
        else
        {
            index = 0;
            backBtn.enabled = false;
        }
       
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        
        ///---获取.plist文件路径
        let path:String! = (NSBundle.mainBundle()).pathForResource("pic.plist",ofType: nil);
        if (path.isEmpty)
        {
            print("路径为空,没找到文件");
        }
       else
        {
            ///---读取文件,先获取数组(plist文件中,root级的类型为ARRAY)
            let array = NSArray(contentsOfFile:path!);
//            print("path=\(path!)");
//            print("array.count = \(array!.count)");
            pic = array;
        }
        
        ///-----设置启动图像
        ///---1、从数组中获取当前索引对应的图片数据
        let dic = pic[0];
        
        ///---2、将数据设置到控件上
        topLabel.text = "\(1)/\(pic.count)";
        
        let i = dic["icon"]!;
        imageview.image = UIImage(named:"\(i!)");
        let s = dic["label"]!;
        label.text = "\(s!)";
        
        ///---禁用上一个按钮
        backBtn.enabled = false;
    }
    ///---下一张
    
    @IBAction func nextBtnClick(sender: UIButton) {
        
        ///---索引++
        index++;
        
        ///---1、从数组中获取当前索引对应的图片数据
        let dic = pic[index-1];
        
        ///---2、将数据设置到控件上
        topLabel.text = "\(index)/\(pic.count)";
        
        let i = dic["icon"]!;
        imageview.image = UIImage(named:"\(i!)");
        let s = dic["label"]!;
        label.text = "\(s!)";
        
       
        ///---设置按钮是否可用
        nextBtn.enabled = index != pic.count;
        backBtn.enabled = index == pic.count;
//
//        if (index == pic.count)
//        {
//            nextBtn.enabled = false;
//        }
//        else
//        {
//            nextBtn.enabled = true;
//        }
        
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // dispose of any resources that can be recreated.
    }


}

6、我的做法可能不是最好的, 还请大神指点下。 3Q

7、swift中,NSArray的元素是倒序的。

swift之图片浏览器的更多相关文章

  1. 移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. ios – iPad中的UIPrintInteractionController给了我两个警告

    我正在使用代码在我的应用程序中获取Airprint以将当前视图打印为图像.弹出Airprint对话框,但在日志屏幕中它显示两个警告:1)警告:在iPad上调用–[UIPrintInteractionControllerpresentAnimated:completionHandler:]找不到PDF标题:找不到`%PDF’.2)[UIPopoverController_commonPresentP

  3. ios – 在applicationWillEnterForeground触发时更改UIView

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  4. UILabel导致应用程序在添加到视图时崩溃(仅限Xcode 6和iOS 8)

    我已将我的项目转换为Xcode6,以便为iOS8构建.但是,特定的UILabel会导致应用程序在添加到视图层次结构时崩溃.这是我收到的唯一错误日志:我无法在项目中的任何位置找到contentInsetsFromFonts方法.此外,我甚至无法在网上任何地方找到它的参考,包括Apple的文档.我没有为这个UIViewController使用NIB,因此UI是在loadView方法中构建的:该应用程序

  5. iOS 7通知中心与标签一样

    您可以试试,也许在将模糊应用到标签之前为模糊添加一点白色.

  6. iOS safari输入插入颜色

    我在iPhone设备上有一个小的CSS问题.我的搜索输入为蓝色,当用户关注它时,插入符号几乎不可见:在所有桌面浏览器中,即使在桌面Safari上,它也具有正确的颜色(白色).知道如何修复此问题并更改iOS设备上的插入颜色吗?

  7. 如何计算iOS 7中的实际字体大小(不是边框)?

    编辑:链接的“重复”问题仅涉及计算文本矩形.我需要在标签缩放之后计算实际字体大小,而不是字符串大小.此方法现已弃用:如何在iOS7中计算UILabel的字体大小,以缩小文字大小以适应?

  8. ios – 为什么在presentmodalviewcontroller调用时,navigationItem.titleView会左对齐?

    我正在使用UILabel作为导航栏的titleView.它工作正常,除了当我呈现模态视图控制器时,titleView从导航栏的中心移动到最左边.我在3.0及以上测试过.这是相关代码:截图:知道为什么会这样吗?

  9. ios – 在XCode中的UI测试期间无法访问自定义视图

    我们必须执行一些时髦的动画,这是我们最好的布局).问题是我无法访问此视图以模拟其上的点击.我可以使用app.staticText[“输入名称…”]访问标签,但是如果我点击它.记录我点击标签的会话将产生app.staticText[“输入名称…”

  10. ios – UITableView以编程方式调用滑动操作

    我有一个UITableView,用户可以向左滑动以显示动作.这一切都按预期工作.当用户点击单元格的某个部分时,我想触发这个.如何以编程方式调用此幻灯片动作?

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部