linux网络管理管理—-网络基础

管理 1

addSubview

顾名思义,就是造出一个View,然后add到ViewController的View上显得出来,如https://www.jianshu.com/p/de2ecfd770c2的做法。

  • 好处:够简单
  • 弊病:视图&逻辑都在View上,职能不清晰,伸张性差,显示信赖于ViewController

from https://www.imooc.com/learn/258

window

新建一个window,切换成KeyWindow,将弹出视图作为rootViewController。代码如下

func show() {
  previousWindow = UIApplication.shared.keyWindow
  keyWindow = UIWindow(frame: UIScreen.main.bounds)
  keyWindow?.rootViewController = self
  keyWindow?.windowLevel = UIWindowLevelNormal + 100
  keyWindow?.backgroundColor = UIColor.clear
  keyWindow?.makeKeyAndVisible()
}
  • 利益:不难、职能清晰…
  • 坏处:在横屏的时候,第二次弹出时,出现彰显问题【暂时不知底干什么】

其次次显示问题

管理 2

前言

付出时平常会自定义一些弹出视图,比如弹框(Alert)、底部弹出框(Action
Sheet)等。自定义弹出视图有无数办法,到底哪一类才更科学吧?上边我列举二种艺术,一起谈谈。先附上自己的方案https://github.com/CatchZeng/SwiftPopup

 

UIPopoverController的应用方式

  • 设置style&delegate

 modalPresentationStyle = .custom
 transitioningDelegate = self
  • 兑现delegate,此代理需要UIPresentationController,以及UIViewControllerAnimatedTransitioning来自定义转场的动画片

extension SwiftPopup: UIViewControllerTransitioningDelegate {

    public func presentationController(forPresented presented: UIViewController,
                                       presenting: UIViewController?,
                                       source: UIViewController) -> UIPresentationController? {
        let controller = SwiftPopupPresentationController(presentedViewController: presented,
                                                       presenting: presenting)
        controller.backViewColor = backViewColor

        return controller
    }

    public func animationController(forPresented presented: UIViewController,
                                    presenting: UIViewController,
                                    source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return showAnimation
    }

    public func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return dismissAnimation
    }
}
  • 落到实处自定义的UIPresentationController

open class SwiftPopupPresentationController: UIPresentationController {
    // MARK: Override Methods 

    // 将要开始转场
    override open func presentationTransitionWillBegin() {
    }

    // 将要移除页面
    override open func dismissalTransitionWillBegin() {
    }

   // 是否要移除PresentersView,也就是转场之前的视图,这里为false,因为弹框需要看到之前的视图
    override open var shouldRemovePresentersView: Bool {
        return false
    }
  • 已毕自定义的卡通片

open class SwiftPopupShowAnimation: NSObject, UIViewControllerAnimatedTransitioning {

    public var duration: TimeInterval = 0.8
    public var delay: TimeInterval = 0.0
    public var springWithDamping: CGFloat = 0.8
    public var springVelocity: CGFloat = 2.0

    open func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
        return duration
    }

    open func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        guard let toViewController = transitionContext.viewController( forKey: UITransitionContextViewControllerKey.to),
            let toView = transitionContext.view( forKey: UITransitionContextViewKey.to)
            else {
            return
        }

        let containerView = transitionContext.containerView
        toView.frame = transitionContext.finalFrame(for: toViewController)
        containerView.addSubview(toView)

        toView.transform = CGAffineTransform(scaleX: 0.01, y: 0.01)
        UIView.animate(withDuration: duration,
                       delay: delay,
                       usingSpringWithDamping: springWithDamping,
                       initialSpringVelocity: springVelocity,
                       options: .curveEaseInOut, animations: {
                        toView.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
        }) { (finished) in
            transitionContext.completeTransition(finished)
        }
    }
}
  • Show

public func show(above viewController: UIViewController? = UIApplication.shared.keyWindow?.rootViewController,
                           completion: (()-> Void)? = nil) {
        mIsShowing = true

        viewController?.present(self, animated: true, completion: completion)
    }
  • Dismiss

public func dismiss(completion: (()-> Void)? = nil) {
        dismiss(animated: true) {
            self.mIsShowing = false
            completion?()
        }
    }

完全代码
https://github.com/CatchZeng/SwiftPopup

Demo

管理 3

addChildViewController

利用addChildViewController方法,将视图显示出来。如https://www.jianshu.com/p/6d790e6eb2ba的做法。

  • 利益:简单、职能清晰…
  • 坏处:在导航栏控制器或者标签栏控制器下弹出,会冒出没完全覆盖到的动静。

1.5 DNS作用

小结

如遇问题依旧有更好的主意,欢迎加QQ群讨论:157672725

1.1 ISO/OSI 七层模型

UIPresentationController

行使UIPresentationController自定义转场动画,那也是本人的贯彻形式。
UIPresentationController是提供高档视图切换的类。它让管理present
ViewController的长河变得不难。

管理 4

Presentation

正如图弹出一个UIViewController,能够和用户交互的Controller叫做PresentedViewController,而前面那一个被有些遮挡的UIViewController叫做PresentingViewController.

Presentation

管理 5

 

管理 6

 

表示拥有和您有关联的ip的所对应的mac地址

 

 

管理 7

管理 8

 

修改hosts文件就可以在先后的布置文件中不用因为ip变了而去修改ip地址

管理 9

 DNS(Domain Name System,域名种类) ip地址一一对应的是域名地址

mac地址:Media Access Control 也是情理地址,那是由网卡决定的。负责的是内网,也就是局域网通讯。

 管理 10

hosts优先级大于DNS

管理 11

端口是来确定你服务器给的哪个服务的

1.6 网关成效

1.3 IP地址

 

 管理 12

管理 13

TCP/IP 五次握手 数据不会丢掉  像发邮件,网页的浏览

IPv4地址:是承担外网的,也就是公网通讯。

管理 14

打入ipconfig:

 

 

是体现路由的IP与MAC地址 绑定状态,查六柱预测应ip对应的mac地址

管理 15

UDP 速度快,可是会丢数据 
 像一般qq聊天就是那般的,有时候会遇到数据丢失的情况

 防钓鱼网站,只要看精通二级域名即可,有过多一般的域名来充数。

 一般地点ip都是个人IP,有过多的再次的,若是要看出口ip,可以平素百度ip,展现的就是你的言语ip。

端口确定所开的劳务

管理 16

 

 

 

 

 

管理 17

 

管理 18

 

管理 19

笔记:

若是你没有配备网关和DNS地址,肯定是不可知上网的。

1.4 端口功用

 管理 20

1.2 Linux网络基础之TCP/IP四层模型 

 管理 21

 公司的开口ip,一般都是经过拨号的之所以会变,重启五遍会变一回。

 

笔记:

 

 

 

 

arp -a

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注