zoukankan      html  css  js  c++  java
  • iOS笔记之ScrollView

    ScrollView三个基本的要理解的属性;

    contentSize

    The size of the content view.所以很好理解,contentSize也就是scrollView可滚动的区域.

    contentOffset

    The point at which the origin of the content view is offset from the origin of the scroll view.

    这里标注的是point,是scrollview当前显示区域顶点相对于frame顶点的偏移量.

    contentInset

    The distance that the content view is inset from the enclosing scroll view.

    这里说得是distance,四个值分别是上下左右, 默认值是 UIEdgeInsetsZero,也就是四个值都为0.是scrollview的contentview的顶点相对于scrollview的位置.

      _|←_cW_→_|_↓_
       |       | 
    ---------------
       |content| ↑
     ↑ |content| contentInset.top
    cH |content||content| contentInset.bottom
       |content|---------------
      _|_______|___ 
                 ↑
    
    (cH = contentSize.height; cW = contentSize.width)

      

    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView; //返回要缩放的图片(必须在代理类里实现)

    图片缩放保持居中,实现代码:

    (在viewWillLayoutSubviews也要调用)

        func recenterImage() {
            let scrollViewSize = scrollView.bounds.size
            let imageSize = imageView.frame.size
            
            let horizontalSpace = imageSize.width < scrollViewSize.width ? (scrollViewSize.width - imageSize.width) / 2 : 0
            let verticalSpace = imageSize.height < scrollViewSize.height ? (scrollViewSize.height - imageSize.height) / 2 : 0
            
            scrollView.contentInset = UIEdgeInsets(top: verticalSpace,
                left: horizontalSpace,
                bottom: verticalSpace,
                right: horizontalSpace)
        }

    ScrollView中键盘的高度适应,实现代码

     NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
     NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
        func keyboardWillShow(notification:NSNotification) {
            adjustInsetForKeyboard(true, notification: notification)
        }
        
        func keyboardWillHide(notification:NSNotification) {
            adjustInsetForKeyboard(false, notification: notification)
        }
        
        func adjustInsetForKeyboard(show:Bool, notification:NSNotification) {
            let userInfo = notification.userInfo ?? [:]
            let keyboardFrame = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue()
            let adjustHeight = (keyboardFrame.height + 10) * (show ? 1 : -1)
            
            scrollView1.contentInset.bottom += adjustHeight
            scrollView1.scrollIndicatorInsets.bottom += adjustHeight
        }
  • 相关阅读:
    无线网络安全标准是什么?漏洞是怎样产生的
    揭秘英特尔处理器如何启动?
    数据包级网络遥测和网络安全推送分析
    自动化与网络工程之间的关系
    ElementUI中的el-table中实现动态添加一行、删除一行、清空所有行
    ElementUI中的el-table实现多选框不勾选的提示
    Nodejs中的fs模块的使用
    ElementUI中的el-table怎样实现多选与单选
    MyBatis中针对if-test的参数为指定值的xml写法
    SqlServer中怎样从Excel中导入数据
  • 原文地址:https://www.cnblogs.com/liuliuliu/p/4498058.html
Copyright © 2011-2022 走看看