模拟一个全局悬浮的购物车

https://www.zybuluo.com/keenleung/note/339988

所有的界面中,都悬浮一个购物车

  • 思路: 
    在 AppDelegate 中创建多一个 Widow, 而且设置 Window 的级别是最高的
  • 注意:
    • 不要指定 Window 的根控制器,指定了根控制器的话,状态栏的显示样式就会与这个根控制器决定了,因为状态栏的显示样式, 是由最顶层 Window 的根控制器决定的
    • Window 的显示不需要添加到任何地方,只需要设置 hidden 属性的值为 NO 即可
  • 做法:
// 程序启动的时候调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 进入广告界面
    // 1.创建窗口
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    // 2.创建窗口的根控制器 => 一开始想显示什么效果
    // 创建广告界面:展示启动界面
    self.window.rootViewController = [[TabBarController alloc] init];
    // 3.显示窗口 makeKey:UIApplication主窗口
    // 窗口会把根控制器的view添加到窗口
    [self.window makeKeyAndVisible];
    // 模拟显示一个全局悬浮的购物车
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        // UIWindowLevelNormal < UIWindowLevelStatusBar < UIWindowLevelAlert
        // 级别越高的window越显示在上面
        // 级别相等的window,后面显示的window显示在上面
        self.topWindow = [[UIWindow alloc] init];
        //        self.topWindow.frame = application.statusBarFrame;
        self.topWindow.frame = CGRectMake(280, 500, 80, 80);
        self.topWindow.backgroundColor = [UIColor redColor];
        self.topWindow.windowLevel = UIWindowLevelAlert;
        self.topWindow.hidden = NO;
        [self.topWindow addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(click)]];
    });
    return YES;
}
时间: 2024-11-10 05:18:42

模拟一个全局悬浮的购物车的相关文章

iOS 实现一个类似电商购物车界面示例

iOS 实现一个类似电商购物车界面示例 先看界面效果图: 主要实现了商品的展示,并且可以对商品进行多选操作,以及改变商品的购买数量.与此同时,计算出,选中的总价格. 做此类型项目:要注意的:视图与数据要分离开来.视图的展现来源是数据模型层.所以我做的操作就是改变数据层的内容,在根据数据内容,去更新视图界面. 已下是具体实现思路与代码: 1. 实现步骤 在AppDelegate.m中包含ViewController.h头文件,创建ViewController对象(vc),接着创建一个UINavig

模拟一个下拉框

用sele标签写的页面总是不太好看,而且在不同的浏览器里显示的样子不同,大家都用div ul li 之类的模拟一个下拉框对其进行美化. 这里是在网上找的一个下拉框的例子,根据它修改完成的,明天试试看,能不能代替项目里的selec. 这里是GitHub地址

java-第十三章-类的无参方法(一)-模拟一个简单的购房商贷月供计算器

package 本章总结; public class A02class { double Money = 0; public double showA(double money, int choice) { switch (choice) { case 1: Money = (money + money * 0.0603) / 36; break; case 2: Money = (money + money * 0.0612) / 60; break; case 3: Money = (mon

【Head First Servlets and JSP】笔记7:如何创建一个全局的dog?

重定向与请求分派 “局部”参数——ServletConfig——servlet初始化参数 “全局”参数——ServletContext——上下文初始化参数 Web app的“构造器”——ServletContextListener 实战:如何创建一个全局的dog? 1.重定向与请求分派. resp.sendRedirect("http://www.cnblogs.com/xkxf/"); RequestDispatcher view = req.getRequestDispatcher

利用反射模拟一个spring的内部工作原理

这个简单的案例是实行了登录和注册的功能,没有链接数据库. 在bean中id 是唯一的,id和name的区别在于id不能用特殊字符而name可以用特殊字符,比如:/-\.... 1 package com.obtk.reflect; 2 3 public class Logon { 4 /** 5 * 帐号密码长度大于六位字符就成功,否则失败! 6 * */ 7 public String select(String name, String pass) { 8 if (name.length()

java模拟一个抽奖程序

今天用一个程序模拟一个从1-32之间,随机抽取7组号码的抽奖程序 * 需要使用Java的图形界面知识 * 窗口  JFrame * 面板  JPanel * 显示文本信息的标签  JLabel * 文本框 JTextField * 按钮  JButton 还涉及到线程Thread 先看效果图: 但是这里留一个问题?就是去除重复数字(可以自己先实现,后期我会上传的) 下面看看代码,代码中有注释,不懂留言: package thread.test1; import java.awt.BorderLa

web前端面试系列 - 数据结构(两个栈模拟一个队列)

一. 用两个栈模拟一个队列 思路一: 1. 一个栈s1作为数据存储,另一个栈s2,作为临时数据存储. 2. 入队时将数据压人s1 3. 出队时将s1弹出,并压人s2,然后弹出s2中的顶部数据,最后再将剩余数据弹出s2,并压人s1. 思路二: 1. 一个栈s1作为数据存储,另一个栈s2,作为临时数据存储. 2. 入队时,判断s1, 是否为空,如果不为空,则将数据直接压入s1, 如果为空,则将s2中的数据全部倒入s1,在将数据压人s1. 3. 出队时,判断s2, 是否为空,如果不为空,则直接弹出s2

用LinkedList模拟一个堆栈或者队列数据结构 总结: LinkedList知识点

/** 用LinkedList模拟一个堆栈或者队列数据结构. 创建一个堆栈和队列数据结构对象,该对象中使用LinkedList来完成的. 知识点总结: 1.LinkedList特点:链表式数据结构. 重复有序,查询速度慢,增删速度快.不同步的. 2.LinkedList除了实现List接口增删改查的功能外,有一些特有的方法,能够实现在List(列表)的开头和结尾 插入,删除,获取等特有功能.这就是为什么LinkedList能够模拟一个堆栈,或者队列,双端队列的数据结构了. 涉及知识点: 1.什么

使用LinkedList模拟一个堆栈或者队列数据结构

使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出  如同一个杯子. 队列:先进先出  如同一个水管. import java.util.LinkedList; public class DuiLie { private LinkedList link; public DuiLie() { link = new LinkedList(); } public void myAdd(Object obj) { link.addFirst(obj); } public Object