中和软件技术培训

上海中和软件公司培训专用博客

美丽约定资料汇总

美丽约定资料汇总


美丽约定所使用的第三方控件资料整理中

关于OC桥接的头文件:

在网络上的一些资料中,Building Setting 里面的 Objective-C Bridging Header 是放在CodeGen下面的,XCode9的话,位置发生变化了。

在编译的时候,可能发生编译错误,_OBJC_CLASS_$_XXXX,可以通过追加Compile Sources来解消:(追加必要的.m文件)

Targets -> 当前工程 -> Build Phases -> Compile Sources

 

美丽约定OC转Swift注意点:

关于#define 这样的预处理指令

Swift里面没有预处理指令:所以改写方法请参考以下文档:

swift中如何达到define的效果

 

关于枚举的使用:

当前代码中,各种状态是以数字表示的,希望大家转Swift的时候,能够将状态用枚举来改写, 增加代码的可读性

例如:Stauts OC原来是 0,1,2,9

改为Swift的话,用一个枚举来表示

 

enum OrderStatus{
Create,
Processing,
Finished,
Cancel
}

 

关于代码实现页面跳转

注意:该方法和Segue方法的区别,页面从下到上出现,Segue的方法PUSH等,从右到左出现

        //实例化一个登陆界面
        let SecondVC = SecondViewController()
        //从下弹出一个界面作为登陆界面,画面迁移
        SecondVC.name = txtUserName.text
        SecondVC.psd = txtPassword.text
        self.present(SecondVC, animated: true, completion: nil)

 

 

关于WebAPI访问的问题:

测试的时候,不要使用真实的网址,可以使用测试用网址(内网)

172.16.97.79:8080    (HTTP,不是HTTPS,真实环境是HTTPS)

下面的代码可以兼容HTTP和HTTPS

注意:实际访问的时候,某些字段需要加密,这里只是疏通测试,不涉及到具体业务。

 

//
//  ViewController.swift
//  AFNetWorkingDemo
//
//  Created by Hu on 2017/10/18.
//  Copyright © 2017年 Hu. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let mananger = AFHTTPSessionManager.init()
        let policy = AFSecurityPolicy.init(pinningMode: .none)
        policy.allowInvalidCertificates = true
        policy.validatesDomainName = false
        mananger.securityPolicy = policy
        
        //HTTP Header
        mananger.requestSerializer = AFJSONRequestSerializer.init()
        mananger.requestSerializer.setValue("4.5.2", forHTTPHeaderField: "AV")
        mananger.requestSerializer.setValue("112", forHTTPHeaderField: "BR")
        mananger.requestSerializer.setValue("46", forHTTPHeaderField: "CO")
        mananger.requestSerializer.setValue("1", forHTTPHeaderField: "CT")
        mananger.requestSerializer.setValue("1", forHTTPHeaderField: "DT")
        mananger.requestSerializer.setValue("getServerVersion", forHTTPHeaderField: "ME")
        mananger.requestSerializer.setValue("26973", forHTTPHeaderField: "US")
        //BODY
        var para = Dictionary<String, Any>()
        para["LoginMobile"] = "LoginMobile"
        para["Password"] = "Password"
        para["ImageHeight"] = 0
        para["ImageWidth"] = 0

        mananger.post("https://api.beauty.glamise.com/Login/getCompanyList", parameters: nil, success: SucProcess, failure: ErrProcess)
    }
    
    func SucProcess(_ task :URLSessionDataTask,Other other:Any?) -> Void{
        print("Success For Request:\(task.response)")
        print("Data:\(other)")
        let dic = other as! Dictionary<String,Any>
        print(dic["Message"]!)
    }

    func ErrProcess(_ task :URLSessionDataTask?,Posterror error : Error) -> Void{
        print("Error For Request:\(error)")
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

 

疏通测试的时候,不要设置Parameter,可能会引发服务器端内部错误。(服务器端程序对于错误参数没有检查,直接内部错误)

 

结果如下:

Success For Request:Optional(<NSHTTPURLResponse: 0x604000038e00> { URL: http://172.16.97.79:8080/Login/getCompanyList } { status code: 200, headers {
    Author = "jimmy.wu";
    "Cache-Control" = "no-cache";
    "Content-Length" = 72;
    "Content-Type" = "application/json; charset=utf-8";
    Date = "Wed, 18 Oct 2017 06:14:13 GMT";
    Expires = "-1";
    Pragma = "no-cache";
    Server = "Microsoft-IIS/7.5";
    "X-AspNet-Version" = "4.0.30319";
    "X-Powered-By" = "ASP.NET";
} })
Data:Optional({
    Code = 0;
    Data = "<null>";
    Message = "\U4e0d\U5408\U6cd5\U53c2\U6570\Uff01";
})
不合法参数!

 

Message部分是中文,使用Swift通过字典取值打印可以看到结果

 

关于NavigationController的背景图平铺的问题:

NavigationController的NavigationBar和状态栏现在变成一体了,所以,原来的背景图无法完全覆盖NavigationBar了,变成平铺的样子了。

1.李帅正在修复这个问题

2.经过周雨婷实验,发现如果是在一个普通的ViewController上放置(AddSubView)一个Navigation的话,可以规避这个问题。

3.如果希望通过拉伸图片来修复这个问题:使用下面的代码拉伸图片:

 

    static func ResizeImage(OriginImage image:UIImage, ScaleToSize size : CGSize) -> UIImage{
        UIGraphicsBeginImageContext(size)
        image.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
        let  ScaleImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return ScaleImage!
    }

 

 

 

 

未完待续

 

 

 

博文最后更新时间:


评论

  • 暂无评论

发表评论

博客统计

访问量:12709

博文总数:13 评论总数:6

原创12 翻译0 转载1