iOS - UIScrollView

前言

    NS_CLASS_AVAILABLE_IOS(2_0) @interface UIScrollView : UIView <NSCoding>@available(iOS 2.0, *)       public class UIScrollView : UIView, NSCoding
  • 移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限。当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容。普通的 UIView 不具备滚动功能,不适合显示过多的内容,UIScrollView 是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容。

  • UIScrollView 的用法很简单,将需要展示的内容添加到 UIScrollView 中,设置 UIScrollView 的 contentSize 属性,告诉 UIScrollView 所有内容的尺寸,也就是告诉它滚动的范围。超出 UIScrollView 边框的内容会被自动隐藏,用户可以用过手势拖动来查看超出边框并被隐藏的内容。

  • UIScrollView 不仅能滚动显示大量内容,还能对其内容进行缩放处理,也就是说,要完成缩放功能的话,只需要将需要缩放的内容添加到 UIScrollView 中。

  • 如果 UIScrollView 无法滚动,可能是以下原因:
    • 没有设置 contentSize
    • scrollEnabled = NO
    • 没有接收到触摸事件 userInteractionEnabled = NO
  • UIScrollView 的各种尺寸

    ScrollView5

1、UIScrollView 的创建

  • Objective-C

        UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(30, 60, [[UIScreen mainScreen] bounds].size.width - 60, 490)];// 将 scrollView 添加到屏幕[self.view addSubview:scrollView];// 向滚动视图中添加显示内容,将 imageView 添加到 scrollView,所有 UIView 子类都可以添加UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"13"]];[scrollView addSubview:imageView];// 设置滚动的范围大小,包含隐藏的部分,contentSize 的大小一般大于 frame 属性设置的可视区的大小scrollView.contentSize = imageView.bounds.size;
  • Swift

        let scrollView:UIScrollView = UIScrollView(frame: CGRectMake(30, 60, UIScreen.mainScreen().bounds.size.width - 60, 490))// 将 scrollView 添加到屏幕self.view.addSubview(scrollView)// 向滚动视图中添加显示内容,将 imageView 添加到 scrollView,所有 UIView 子类都可以添加let imageView:UIImageView = UIImageView(image: UIImage(named: "13"))scrollView.addSubview(imageView)// 设置滚动的范围大小,包含了隐藏的部分,contentSize 的大小一般大于 frame 属性设置的可视区的大小scrollView.contentSize = imageView.bounds.size
  • Storyboard

    • 在 Storyboard 上添加 Scroll View 控件,在 Scroll View 控件上添加其它控件,如 ImageView 控件。
      • 在 Storyboard 中设置的 Scroll View 控件背景在程序运行时才能显示出来。

      ScrollView2

    • 将 Scroll View 控件拖线到 View Controller 代码中,设置 contentSize 的大小。

          @interface ViewController ()@property (nonatomic, weak) IBOutlet UIScrollView *scrollView;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// 设置滚动的范围大小self.scrollView.contentSize = CGSizeMake(364, 364);}@end
    • 运行显示效果

      ScrollView3ScrollView4

2、UIScrollView 的设置

  • Objective-C

        // 设置滚动条的风格/*UIScrollViewIndicatorStyleDefault,   // 灰色样式,默认UIScrollViewIndicatorStyleBlack,     // 黑色样式UIScrollViewIndicatorStyleWhite      // 白色样式*/scrollView.indicatorStyle = UIScrollViewIndicatorStyleDefault;// 设置是否显示滚动条scrollView.showsHorizontalScrollIndicator = YES;   // 水平方向scrollView.showsVerticalScrollIndicator = YES;     // 垂直方向// 设置滚动的范围大小/*告诉 UIScrollView 所有内容的尺寸,也就是告诉它滚动的范围内容的大小包含了隐藏的部分,contentSize 的大小一般大于 frame 属性设置的可视区的大小某个值等于 0 时,则 UIScrollView 在此方向上不能滚动,如 CGSizeMake(0, 364),在 x 方向上不能滚动*/scrollView.contentSize = CGSizeMake(364, 364);// 设置四周额外的滚动区域/*在 UIScrollView 的 4 周增加额外的滚动区域一般用来避免 scrollView 的内容被其他控件挡住UIEdgeInsets UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right)*/scrollView.contentInset = UIEdgeInsetsMake(64, 20, 30, 10);// 设置偏移量/*用来表示 UIScrollView 滚动的位置其实就是内容左上角与 scrollView 左上角的间距值CGPointZero 相当于 CGPointMake(0, 0)*/scrollView.contentOffset = CGPointMake(100, 200);[scrollView setContentOffset:CGPointZero animated:YES];// 获取偏移量CGPoint contentOffset = scrollView.contentOffset;// 获取子视图/*水平和垂直滚动条也是 scrollView 的子视图*/NSArray *subviews = scrollView.subviews;// 获取显示内容的高度/*CGRectGetMaxY(CGRect rect) 自动计算最大 Y 坐标值注意 水平和垂直滚动条也是 scrollView 的子视图,会产生计算错误*/// 由最后一个控件计算CGFloat contentH = lastView.frame.origin.y + lastView.frame.size.height;// 使用系统方法计算CGFloat contentH = CGRectGetMaxY(lastView.frame);// 设置点击状态栏能否滚动到画面最顶端/*也可以在协议方法中设置*/scrollView.scrollsToTop = YES;// 设置是否允许手动滚动scrollView.scrollEnabled = YES;// 设置是否整页移动scrollView.pagingEnabled = NO;// 设置是否开启弹簧效果scrollView.bounces = YES;// 关闭下沉效果/* 如果 viewController 在导航里,这个 viewController 的第一个子视图是 ScrollView 或其子类,系统会让 ScrollView 有个下沉的效果,有时这个效果会跟自己的代码冲突,通常会把它关掉*/// 判断是否实现了下沉效果if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {// 关闭下沉效果self.automaticallyAdjustsScrollViewInsets = NO;}// 设置缩放倍数/*需要遵守 <UIScrollViewDelegate> 协议,并实现 viewForZoomingInScrollView 协议方法如果是在模拟器中测试,需要按住 option 键再拖动内容*/scrollView.maximumZoomScale = 3;          // 放大倍数,   scrollView.minimumZoomScale = 0.1;        // 缩小倍数// 获取当前缩放倍数CGFloat zoomScale = scrollView.zoomScale;// 设置代理,需要遵守协议 <UIScrollViewDelegate>scrollView.delegate = self;
  • Swift

        // 设置滚动条的风格/*case Default   // 灰色样式,默认case Black     // 黑色样式case White     // 白色样式*/scrollView.indicatorStyle = .Default// 设置是否显示滚动条scrollView.showsHorizontalScrollIndicator = true     // 水平方向scrollView.showsVerticalScrollIndicator = true       // 垂直方向// 设置滚动的范围大小/*告诉 UIScrollView 所有内容的尺寸,也就是告诉它滚动的范围内容的大小包含了隐藏的部分,contentSize 的大小一般大于 frame 属性设置的可视区的大小某个值等于 0 时,则 UIScrollView 在此方向上不能滚动,如 CGSizeMake(0, 364),在 x 方向上不能滚动*/scrollView.contentSize = CGSizeMake(364, 364)// 设置四周额外的滚动区域/*在 UIScrollView 的 4 周增加额外的滚动区域一般用来避免 scrollView 的内容被其他控件挡住UIEdgeInsets UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right)*/scrollView.contentInset = UIEdgeInsetsMake(64, 20, 30, 10)// 设置偏移量/*用来表示 UIScrollView 滚动的位置其实就是内容左上角与 scrollView 左上角的间距值CGPointZero 相当于 CGPointMake(0, 0)*/scrollView.contentOffset = CGPointMake(100, 200)scrollView.setContentOffset(CGPointZero, animated: true)// 获取偏移量let contentOffset:CGPoint = scrollView.contentOffset// 获取子视图/*水平和垂直滚动条也是 scrollView 的子视图*/let subviews:Array = scrollView.subviews// 获取显示内容的高度/*CGRectGetMaxY(CGRect rect) 自动计算最大 Y 坐标值注意 水平和垂直滚动条也是 scrollView 的子视图,会产生计算错误*/// 由最后一个控件计算let contentH = lastView.frame.origin.y + lastView.frame.size.height// 使用系统方法计算let contentH = CGRectGetMaxY(lastView.frame)// 设置点击状态栏能否滚动到画面最顶端/*也可以在协议方法中设置*/scrollView.scrollsToTop = true// 设置是否允许手动滚动scrollView.scrollEnabled = true// 设置是否整页移动scrollView.pagingEnabled = false// 设置是否开启弹簧效果scrollView.bounces = true// 关闭下沉效果/* 如果 viewController 在导航里,这个 viewController 的第一个子视图是 ScrollView 或其子类,系统会让 ScrollView 有个下沉的效果,有时这个效果会跟自己的代码冲突,通常会把它关掉*/// 判断是否实现了下沉效果if self.respondsToSelector(Selector("setAutomaticallyAdjustsScrollViewInsets:")) {// 关闭下沉效果self.automaticallyAdjustsScrollViewInsets = true}// 设置缩放倍数/*需要遵守 UIScrollViewDelegate 协议,并实现 viewForZoomingInScrollView 协议方法如果是在模拟器中测试,需要按住 option 键再拖动内容*/scrollView.maximumZoomScale = 3      // 放大倍数scrollView.minimumZoomScale = 0.1    // 缩小倍数// 获取当前缩放倍数let zoomScale:CGFloat = scrollView.zoomScale// 设置代理,需要遵守协议 UIScrollViewDelegatescrollView.delegate = self

3、向 scrollView 添加图片集

3.1 添加少量图片

  • 每次添加一张图片的时候都会创建一个 UIImageView 对象,如果添加的图片过多或图片太大会占用大量的内存。

  • Objective-C

        #define WIDTH   [UIScreen mainScreen].bounds.size.width#define HEIGHT  [UIScreen mainScreen].bounds.size.height// 设置 scrollView 的尺寸CGFloat w = WIDTH - 20;CGFloat h = HEIGHT - 40;// 设置图片数量int count = 5;UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(10, 30, w, h)];scrollView.pagingEnabled = YES;[self.view addSubview:scrollView];// 设置 contentSize,水平方向能滚动scrollView.contentSize = CGSizeMake(count * w, 0);// 添加少量图片for (int i = 0; i < count; i++) {UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(i * w, 0, w, h)];imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg", i]];// 将 imageView 添加到 scrollView 上[scrollView addSubview:imageView];}
  • Swift

        let WIDTH = UIScreen.mainScreen().bounds.size.widthlet HEIGHT = UIScreen.mainScreen().bounds.size.height// 设置 scrollView 的尺寸let w = WIDTH - 20let h = HEIGHT - 40// 设置图片数量let count:Int = 5let scrollView:UIScrollView = UIScrollView(frame: CGRectMake(10, 30, w, h))scrollView.pagingEnabled = trueself.view.addSubview(scrollView)// 设置 contentSize,水平方向能滚动scrollView.contentSize = CGSizeMake(count * w, 0)// 添加少量图片for i in 0 ..< count {let imageView:UIImageView = UIImageView(frame: CGRectMake(CGFloat(i) * w, 0, w, h))imageView.image = UIImage(named: String(format: "%d.jpg", i))// 将 imageView 添加到 scrollView 上scrollView.addSubview(imageView)}

3.2 添加大量图片

  • 只创建 3 个 UIImageView 对象,向 scrollView 添加图片时复用这 3 个 UIImageView 对象。

  • Objective-C

4、UIScrollView 的协议方法

  • 需遵守协议 UIScrollViewDelegate,并设置代理

  • 设置代理方法:

    • 通过代码

          // self 就是控制器self.scrollView.delegate = self;
    • 通过 storyboard 拖线

      ScrollView6

  • Objective-C

    • 拖拽

          // 将要开始拖拽- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {}// 将要结束拖拽- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {}// 已经结束拖拽,decelerate 松手后 是否有惯性滚动 0:没有,1:有- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {}
    • 滚动

          // 滚动过程中,只要滚动就会触发- (void)scrollViewDidScroll:(UIScrollView *)scrollView { }// 已经结束滚动,滚动动画停止时执行,代码改变时触发,也就是 setContentOffset 改变时- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {}
    • 惯性滚动

          // 将要开始惯性滚动- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {}// 已经结束惯性滚动- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {}
    • 滚到顶端

          // 设置点击状态栏时是否滚到顶端- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView {return YES;}// 已经滚到顶端,点击状态栏时调用- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView {}
    • 缩放

          // 设置被缩放的空间,一个 scrollView 中只能有一个子控件被缩放,如果有很多个子控件缩放时会引起错乱- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {return [scrollView.subviews[0] viewWithTag:100];}// 将要开始缩放- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view {}// 已经结束缩放- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {}// 缩放过程中,只要缩放就会触发- (void)scrollViewDidZoom:(UIScrollView *)scrollView {}
  • Swift

    • 拖拽

          // 将要开始拖拽func scrollViewWillBeginDragging(scrollView: UIScrollView) {}// 将要结束拖拽func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {}// 已经结束拖拽,decelerate 松手后 是否有惯性滚动 0:没有,1:有func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {}
    • 滚动

          // 滚动过程中,只要滚动就会触发,只要滚动就会触发func scrollViewDidScroll(scrollView: UIScrollView) {}// 已经结束滚动,滚动动画停止时执行,代码改变时触发,也就是 setContentOffset 改变时func scrollViewDidEndScrollingAnimation(scrollView: UIScrollView) {}
    • 惯性滚动

          // 将要开始惯性滚动func scrollViewWillBeginDecelerating(scrollView: UIScrollView) {}// 已经结束惯性滚动func scrollViewDidEndDecelerating(scrollView: UIScrollView) {}
    • 滚到顶端

          // 设置点击状态栏时是否滚到顶端func scrollViewShouldScrollToTop(scrollView: UIScrollView) -> Bool {return true}// 已经滚到顶端,点击状态栏时调用func scrollViewDidScrollToTop(scrollView: UIScrollView) {}
    • 缩放

          // 设置被缩放的空间,一个 scrollView 中只能有一个子控件被缩放,如果有很多个子控件缩放时会引起错乱func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {return scrollView.subviews[0].viewWithTag(100)}// 将要开始缩放func scrollViewWillBeginZooming(scrollView: UIScrollView, withView view: UIView?) {}// 已经结束缩放func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) {}// 缩放过程中,只要缩放就会触发func scrollViewDidZoom(scrollView: UIScrollView) {}

5、Storyboard 中设置

  • 在 Storyboard 场景中设置

    • Scroll View

      993906-20160809165102231-1074774714.png

      Style滚动条颜色类型
      Scroll Indicators
      -- Shows Horizontal Indicator显示水平滚动条
      -- Shows Vertical Indicator显示垂直滚动条
      Scrolling
      -- Scolling Enabled可以滚动
      -- Paging Enabled按页面滚动
      -- Direction Lock Enabled滚动方向固定
      Bounce
      -- Bounces启动弹簧效果
      -- Bounce Horizontal水平弹簧效果
      -- Bounce Vertical垂直弹簧效果
      Zoom最小/最大缩放值
      Touch
      -- Bounces Zoom
      -- Delays Content Touches
      -- Cancellable Content Touches
      Keyboard键盘设置
  • 在 Storyboard 场景绑定的 Controller 中设置

    • 在 Storyboard 添加的 ScrollView 上需在其上添加子视图作为 ContentView,并添加子视图的约束,ScrollView 才能够计算 contentSize 的大小,子视图才能够滚动。

    • 若要在 Storyboard 的 ScrollView 上添加一个不随 ContentView 滚动的视图,需在 ViewController 上添加一个和 ScrollView 相同位置大小的视图,并设置不滚动视图相对于该视图的约束。

转载于:https://www.cnblogs.com/QianChia/p/5753169.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习的展望

现阶段越来越多的投入到机器学习的热潮中来&#xff0c;有的人很是兴奋&#xff0c;认为这是一场新和革命&#xff0c;一场终极人工智能来临的前夜。也有人表示悲观&#xff0c;认为不仅机器学习不代表终极人工智能&#xff0c; 也还非常不成熟。 大量的新生代投入到这个领域&a…

BZOJ3453 XLkxc(拉格朗日插值)

显然f(i)是一个k2项式&#xff0c;g(x)是f(i)的前缀和&#xff0c;则显然其是k3项式&#xff0c;插值即可。最后要求的东西大胆猜想是个k4项式继续插值就做完了。注意2p>maxint…… #include<iostream> #include<cstdio> #include<cmath> #include<cs…

电邮地址_利用这些简单的技巧来充分利用电子邮件的强大功能

电邮地址Let’s talk about some email features that are surprisingly under-used, and that can really benefit you — if you know how to use them. This article is suitable for both users and developers who want to become email Jedi.让我们讨论一些电子邮件功能&…

inputstream重新赋值之前需要close吗_变量提升真的搞懂了吗?打脸的一道题

变量提升真的搞懂了吗&#xff1f;打脸的一道题我们知道JS代码在执行之前&#xff0c;会做一系列的事情&#xff0c;其中就包括变量提升&#xff0c;原本以为把变量提升搞懂的我&#xff08;因为这两天一直在研究变量提升&#xff0c;自我感觉已经很良好了&#xff0c;哈哈哈&a…

html5语义化 兼容,HTML5语义化标签,兼容性问题

HTML5不仅仅作为HTML标记语言的一个最新版本&#xff0c;更重要的是它制定了web应用开发的一系列标准&#xff0c;成为第一个将web做为应用开发平台的HTML语言。HTML5定义了一系列的新元素&#xff0c;如新语义化标签&#xff0c;智能表单&#xff0c;多媒体标签等&#xff0c;…

Swift之 vm10虚拟机安装Mac OS X10.10教程

VM10装Mac OS X 10.9.3及更新到Mac OS X 10.10,让你的windows也能玩Swift 。 近期WWDC放出终极大招——新的编程语言Swift(雨燕),导致一大波程序猿的围观和跃跃欲试。当然了,工欲善其事,必先利其器,所以对于那些没有Mac又想要尝鲜的小伙伴肯定非常为难。可是&#xff0c;请放…

如何使用json开发web_如何通过使用JSON Web令牌简化应用程序的身份验证

如何使用json开发webby Sudheesh Shetty由Sudheesh Shetty 如何通过使用JSON Web令牌简化应用程序的身份验证 (How to simplify your app’s authentication by using JSON Web Token) Every application we come across today implements security measures so that the user…

c++ 实现录音并且指定到文件_通话自动录音,留下美好回忆,记录完整录音证据...

手机通话&#xff0c;如果自动录音多好&#xff0c;许多人与我一样抱有这个想法。记得华为Android版本5.0时代&#xff0c;手机没有自动录音功能&#xff0c;我一直到网上下载自动通话录音软件&#xff0c;有时甚至是下载ROOT版的带自动通话功能的EMUI版本进行刷机安装。那个时…

2639-Bone Collector II (01背包之第k优解)

题目链接&#xff1a; http://acm.hdu.edu.cn/showproblem.php?pid2639 求第k优解的关键代码&#xff1a; 用两个数组记录两种状态&#xff08;选择或不选择&#xff09;&#xff0c;并且只要记录前k次。在这两个数组中都是前k次可能的最优解。所以我们只要把这两个数组做比较…

html自动按键,VBS脚本和HTML DOM自动操作网页

本来是想通过JS实现对其他页面的控制&#xff0c;发现跨域无法获取页面DOM来操作。接着考虑bat&#xff0c;发现也实现不了&#xff0c;于是想到vbs。vbs还是很强大啊&#xff0c;病毒之类很多都是vbs脚本啊。vbs打开浏览器&#xff0c;然后通过dom来操作页面&#xff0c;可以实…

opencv在同一窗口打印多张图片

首先&#xff0c;由于cv2处理的图片是通过ndarray的格式操作的&#xff0c;也就是说通过array的拼接就可以实现图片的拼接&#xff0c;那么之后就可以通过简单的imshow将合并的图片打印从而达到在一个窗口中显示多张图片的目的。 import cv2 import numpy as npimg1 cv2.imrea…

dj打碟怎么学_学DJ打碟 - Rane声卡连接

上一篇内容中&#xff0c;老师讲过在学DJ打碟的时候&#xff0c;是离不开对软件方面的操作&#xff0c;其实每一个学习过程&#xff0c;当你学会之后&#xff0c;在“回头看”的时候&#xff0c;都会觉得&#xff1a;原来学DJ打碟这么简单啊&#xff0c;这就是已经学习过的人会…

微信企业号第三方应用开发[一]——创建套件

注&#xff1a;文中绿色部分为摘自微信官方文档 第三方应用提供给企业的是一个应用&#xff0c;但是应用必须在套件下创建&#xff0c;所以第一步是要创建套件。 注册成为应用提供商&#xff0c;必须输入以下信息&#xff1a; 信息项要求及说明企业Logo应用提供商的企业Logo&am…

advanced east_SpriteKit Advanced —如何构建2,5D游戏(第二部分)

advanced eastby Luke Konior卢克科尼尔(Luke Konior) SpriteKit Advanced —如何构建2,5D游戏(第二部分) (SpriteKit Advanced — How to build a 2,5D game (Part II)) 介绍 (Intro) This article shows how to write basic shaders in the SpriteKit. It’s split into two…

html原生上传,一个基于HTML5及原生JS的文件上传组件--JohnUploader

运行效果图一、组件介绍基本特点基于HTML5的FileReader和FormData可以完成多文件选择&#xff0c;并预览完成文件的异步上传原生XHR对象&#xff0c;适配多浏览器代码class JohnUploader{url;fileField;vollay;/**** param url 文件上传的地址* param fileField 一个"文件…

[20170617]vim中调用sqlplus.txt

[20170617]vim中调用sqlplus.txt --//以前写过一篇emacs下调用sqlplus的文章,一直想学emacs,受限制自己掌握vim,对学习它没有兴趣,原链接如下: --//http://blog.itpub.net/267265/viewspace-1309032/ --//实际上vim也有插件连接数据库,我觉得不好用,一直没这样用. --//今天在整…

centos redis验证_centos7中安装、配置、验证、卸载redis

本文介绍在centos7中安装、配置、验证、卸载redis等操作&#xff0c;以及在使用redis中的一些注意事项。一 安装redis1 创建redis的安装目录利用以下命令&#xff0c;切换到/usr/local路径cd /usr/local键入以下命令&#xff0c;新建一个redis目录&#xff0c;用于放置redis软件…

实习生解雇_我们解雇了我们的顶尖人才。 我们做出的最佳决定。

实习生解雇by Jonathan Solrzano-Hamilton乔纳森索洛萨诺汉密尔顿(JonathanSolrzano-Hamilton) 我们解雇了我们的顶尖人才。 我们做出的最佳决定。 (We fired our top talent. Best decision we ever made.) “You will never be able to understand any of what I’ve create…

微信企业号第三方应用开发[二]——创建应用

在应用套件里添加应用 当你创建完应用套件后&#xff0c;需要在套件配置应用&#xff0c;应用的信息填写如下。 基本信息&#xff1a; 信息项要求及说明应用Logo应用的Logo&#xff0c;小于2M&#xff0c;640*640&#xff0c;在授权页会被用于展示。应用名称应用的名称&#xf…

es6新增的html标签,javascript – 如何导入已在html中的标签中定义的es6模块?

我可以在我的html文件me.html中定义一个模块&#xff1a;import Atom from ./atom.js;console.log("definition of getAtom")export default function getAtom(){return new Atom(atom);}console.log("exported getAtom")另见>是否可以将该“匿名”模块…