美文网首页Swift基础Swift - UI
4、UIViewController、UIView、UIImag

4、UIViewController、UIView、UIImag

作者: 爱玩游戏的iOS菜鸟 | 来源:发表于2020-03-02 15:40 被阅读0次

    视图控制器

    UIViewController扩展
    import UIKit
    
    enum NavigationItemType {
        case NavigationItemTitle
        case NavigationItemImage
    }
    
    extension UIViewController{
        //设置导航栏标题
        func setNavigationTitle(_ title:String) {
            navigationItem.title = title
        }
        //push到下一个控制器
        func push(to viewController: UIViewController) {
            navigationController?.pushViewController(viewController, animated: true)
        }
    
        //FP写法
        /// 添加导航栏左侧按钮
        /// - Parameter title: 按钮文字
        func addLeftNavigationTitleItem(_ title: String) -> (UIColor) -> (CGFloat) -> (Selector) -> (){
            { color in
                { fontSize in
                    { sec in
                        let item = self.addNavigationItem(title)(.NavigationItemTitle)(color)(fontSize)(sec)
                        self.navigationItem.leftBarButtonItem = item
                    }
                }
            }
        }
        
        /// 添加导航栏左侧按钮
        /// - Parameter image: 按钮图片名
        func addLeftNavigationImageItem(_ image: String) -> (UIColor) -> (CGFloat) -> (Selector) -> (){
            { color in
                { fontSize in
                    { sec in
                        let item = self.addNavigationItem(image)(.NavigationItemImage)(color)(fontSize)(sec)
                        self.navigationItem.leftBarButtonItem = item
                    }
                }
            }
        }
        /// 添加导航栏右侧按钮
        /// - Parameter image: 按钮文字
        func addRightNavigationTitleItem(_ title: String) -> (UIColor) -> (CGFloat) -> (Selector) -> (){
            { color in
                { fontSize in
                    { sec in
                        let item = self.addNavigationItem(title)(.NavigationItemTitle)(color)(fontSize)(sec)
                        self.navigationItem.rightBarButtonItem = item
                    }
                }
            }
        }
        /// 添加导航栏右侧按钮
        /// - Parameter image: 按钮图片名
        func addRightNavigationImageItem(_ image: String) -> (UIColor) -> (CGFloat) -> (Selector) -> (){
            { color in
                { fontSize in
                    { sec in
                        let item = self.addNavigationItem(image)(.NavigationItemImage)(color)(fontSize)(sec)
                        self.navigationItem.rightBarButtonItem = item
                    }
                }
            }
        }
        
        
        fileprivate func addNavigationItem(_ title: String) -> (NavigationItemType) -> (UIColor) -> (CGFloat) -> (Selector) -> (UIBarButtonItem) {
            { type in
                { color in
                    { fontSize in
                        {sec in
                            let button = UIButton(type: UIButton.ButtonType.custom)
                            
                            switch type {
                            case .NavigationItemTitle:
                                button.setTitle(title, for: UIControl.State.normal)
                                
                                let width = 20 + 18*(title.count - 1);
                                button.frame = CGRect(x: 0, y: 0, width: width, height: 44)
                                button.setTitleColor(color, for: UIControl.State.normal)
                                button.titleLabel?.font = UIFont.systemFont(ofSize: fontSize)
                                
                            case .NavigationItemImage:
                                button.setImage(UIImage(named: title), for: UIControl.State.normal)
                                button.frame = CGRect(x: 0, y: 0, width: 44, height: 44)
                            }
                            
                            button.addTarget(self, action: sec, for: UIControl.Event.touchUpInside)
                            return UIBarButtonItem(customView: button)
                        }
                    }
                }
            }
        }
    }
    
    UIImage扩展
    extension UIImage{
        static func imageWithColor(_ color: UIColor) -> UIImage {
            let rect = CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0)
            UIGraphicsBeginImageContext(rect.size)
            
            let context: CGContext = UIGraphicsGetCurrentContext()!
            context.setFillColor(color.cgColor)
            context.fill(rect)
            
            let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
            UIGraphicsEndImageContext();
            
            return image;
        }
    }
    
    UIView扩展
    extension UIView {
        var x :CGFloat {
            set{
                var newframe = frame
                newframe.origin.x = newValue
                frame = newframe
            }
            get{
                frame.origin.x
            }
        }
        
        var y :CGFloat {
            set{
                var newframe = frame
                newframe.origin.y = newValue
                frame = newframe
            }
            get{
                frame.origin.y
            }
        }
        
        var width :CGFloat {
            set{
                var newframe = frame
                newframe.size.width = newValue
                frame = newframe
            }
            get{
                frame.size.width
            }
        }
        
        var height :CGFloat {
            set{
                var newframe = frame
                newframe.size.height = newValue
                frame = newframe
            }
            get{
                frame.size.height
            }
        }
        
        var top :CGFloat {
            y
        }
        
        var bottom :CGFloat {
            y + height
        }
        
        var leading :CGFloat {
            x
        }
        
        var trailing :CGFloat {
            x + width
        }
        
        func setRadius(_ radius:CGFloat, _ width:CGFloat = 0.0, _ color: UIColor = UIColor.clear){
            layer.cornerRadius = radius
            layer.masksToBounds = true
            
            layer.borderWidth = width
            layer.borderColor = color.cgColor
        }
        
        
        func setPortionRadius(_ rectCorner:UIRectCorner) -> (CGFloat) -> () {
            { radius in
                
                let maskPath = UIBezierPath(roundedRect: self.bounds,
                byRoundingCorners: rectCorner, cornerRadii:CGSize(width:radius, height:radius))
                let masklayer = CAShapeLayer()
                masklayer.frame = self.bounds
                masklayer.path = maskPath.cgPath
                self.layer.mask = masklayer
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:4、UIViewController、UIView、UIImag

        本文链接:https://www.haomeiwen.com/subject/ktkvkhtx.html