小编hen*_*nes的帖子

UIBezierPath:如何在带圆角的视图周围添加边框?

我正在使用UIBezierPath让我的imageview有圆角,但我也想为imageview添加边框.请记住,顶部是uiimage,底部是标签.

目前使用此代码生成:

let rectShape = CAShapeLayer()
rectShape.bounds = myCell2.NewFeedImageView.frame
rectShape.position = myCell2.NewFeedImageView.center
rectShape.path = UIBezierPath(roundedRect: myCell2.NewFeedImageView.bounds,
    byRoundingCorners: .TopRight | .TopLeft,
    cornerRadii: CGSize(width: 25, height: 25)).CGPath
myCell2.NewFeedImageView.layer.mask = rectShape
Run Code Online (Sandbox Code Playgroud)

当前

我想为此添加绿色边框,但我无法使用

myCell2.NewFeedImageView.layer.borderWidth = 8
myCell2.NewFeedImageView.layer.borderColor = UIColor.greenColor().CGColor
Run Code Online (Sandbox Code Playgroud)

因为它会切断边框的左上角和右上角,如下图所示:

问题

有没有办法添加UIBezierPath边框以及我当前的代码?

uibezierpath swift

17
推荐指数
3
解决办法
2万
查看次数

在Swift中使用value参数时,genstrings会出现阻塞

我有一个基本的Swift文件Test.swift,其中包含

import Foundation
import UIKit

class Test: NSObject {
    let a: String
    let b: String

    override init() {
        a = NSLocalizedString("key 1", tableName: nil,
            bundle: NSBundle.mainBundle(), value: "value 1", comment: "comment 1")
        b = NSLocalizedString("key 2", comment: "comment 2")
    }
}
Run Code Online (Sandbox Code Playgroud)

当我genstrings在这个文件上运行时,我收到一个意外的警告

$ genstrings -u Test.swift
Bad entry in file Test.swift (line = 9): Argument is not a literal string.
Run Code Online (Sandbox Code Playgroud)

并且生成的Localizable.strings文件缺少条目"key 1"

$ cat Localizable.strings 
??/* comment 2 */
"key 2" = "key …
Run Code Online (Sandbox Code Playgroud)

objective-c genstrings ios swift

12
推荐指数
2
解决办法
3449
查看次数

在C中翻转双/浮点符号的最快方法

在C中翻转双(或浮点)符号的最快方法是什么?

我想,直接访问符号位将是最快的方法,并找到以下内容:

double a = 5.0;
*(__int64*)&a |= 0x8000000000000000;
// a = -5.0

float b = 3.0;
*(int*)&b |= 0x80000000;
// b = -3.0
Run Code Online (Sandbox Code Playgroud)

但是,上述内容不适用于负数:

double a = -5.0;
*(__int64*)&a |= 0x8000000000000000;
// a = -5.0
Run Code Online (Sandbox Code Playgroud)

c floating-point double bit-manipulation sign

10
推荐指数
3
解决办法
1万
查看次数

如果在协议扩展中定义静态方法,如何在协议上调用静态方法?

protocol Car {
    static func foo() 
}

struct Truck : Car {

}

extension Car {
    static func foo() {
        print("bar")
    }
}

Car.foo() // Does not work  
// Error: Car does not have a member named foo

Truck.foo() // Works
Run Code Online (Sandbox Code Playgroud)

Xcode Car.foo()正确地自动填充,所以我要问的是它是否是一个不能编译的错误(说它没有一个名为foo()的成员).如果在协议扩展中定义静态方法,可以直接在协议上调用静态方法吗?

protocols swift swift2 protocol-extension

9
推荐指数
1
解决办法
3302
查看次数

curl将POST请求上的空数据发送到Web api

我想通过 curl windows 64 位将数据发布到 asp.net web api(using C#) 上。但是,每次我这样做时,控制都会传递给 HttpPost 方法,但是接受参数的值仍然为空。这在浏览器上使用 url 时无需 curl 即可工作..所以数据库没有问题。

我的卷曲语法是:

curl -X POST 'Content-Type:application/json' --data '[{"Id":"44","Name":"Abc","Category":"xyz","Price":"98"}]' "http://example.com/Post/Products"
Run Code Online (Sandbox Code Playgroud)

我的 web api 的服务器端代码是

[ActionName("Default Action")]
[Route("Post/Products")]
[AcceptVerbs("Get"), HttpPost]
public List<ProductDetails> PostProduct([FromBody] List<ProductDetails>  pro)
{
    // IEnumerable<string> headerValues = Request.Headers.GetValues("MyCustomID");
    // var ide = headerValues.FirstOrDefault();
    // int id=Convert.ToInt16(pro.Id);
    // int Pric = Convert.ToInt16(Pricc);
    con = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\mydatabase.mdf;Integrated Security=True");
    SqlCommand ss = new SqlCommand("Insert into [Table] values ("+pro[0].Id+",'"+pro[0].Name+"','"+pro[0].Category+"',"+pro[0].Price+")", con);
    con.Open();
    SqlDataReader dr2 = ss.ExecuteReader();
    con.Close();
    con.Open(); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api

5
推荐指数
1
解决办法
2219
查看次数

斯威夫特字典理解

其他语言(如Python)允许您使用字典理解来从数组中创建一个字典,但我还没有弄清楚如何在Swift中执行此操作.我以为我可以使用这样的东西,但它不能编译:

let x = ["a","b","c"]
let y = x.map( { ($0:"x") })
// expected y to be ["a":"x", "b":"x", "c":"x"]
Run Code Online (Sandbox Code Playgroud)

在swift中从数组生成字典的正确方法是什么?

dictionary-comprehension swift

5
推荐指数
1
解决办法
727
查看次数

标签文本为零时,如何轻松折叠标签周围的垂直空间?

假设我有三个标签,这些标签在一列中彼此并排放置。最上面的标签的顶部边缘固定到超级视图的顶部边缘。所有后续标签的上边缘都固定到先前标签的下边缘。所有标签的前缘和后缘都固定到超级视图的前缘和后缘。这是Interface Builder中的外观(我在每个标签上添加了蓝色背景以可视化其范围)。

屏幕截图显示了界面构建器中的标签

在模拟器中,结果如下所示。

模拟器屏幕截图显示了三个标签

所有标签都连接到视图控制器中的插座。

@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
@IBOutlet weak var label3: UILabel!
Run Code Online (Sandbox Code Playgroud)

当我将的文字设置label2nil

label2.text = nil
Run Code Online (Sandbox Code Playgroud)

标签本身会折叠。

模拟器屏幕截图显示了折叠的中间标签

但是,标签周围的顶部和底部空间不会折叠。在上一个屏幕截图的中间标签上没有蓝色背景这一事实可以明显看出这一点。结果,第一个屏幕截图中的label1和之间label3的空间是布局的两倍。

我的问题是- 在iOS8上,最简单的方法是折叠中间标签的顶部或底部空间,以便剩下的两个标签仍使用原始布局中定义的垂直间距?要明确的是,这是我想要实现的结果。

模拟器屏幕截图显示了剩余两个标签之间的间距减小了

我到目前为止找到的选项:

底部/顶部间距约束出口

为中间标签的顶部或底部间距约束定义出口。

@IBOutlet weak var spacingConstraint: NSLayoutConstraint!
Run Code Online (Sandbox Code Playgroud)

将约束的初始常数存储到变量中(例如in awakeFromNib或中viewDidLoad)。

private var initialSpacing: CGFloat!

override func viewDidLoad() {
    initialSpacing = spacingConstraint.constant
    ...
Run Code Online (Sandbox Code Playgroud)

每当文本设置为约束时,将常量的常数设置为零,nil否则将约束常量设置为初始值nil

spacingConstraint.constant = label2.text == nil ? 0 : initialSpacing
Run Code Online (Sandbox Code Playgroud)

这种方法有点笨拙,因为它需要两个附加变量。

高度限制插座

将中间标签周围的垂直间距设置为零,并将其高度增加相同的数量。为高度限制定义出口,然后按上述步骤进行操作,如果文本为nil,则将高度设置为零;否则,将高度设置为初始值nil …

ios autolayout swift

5
推荐指数
1
解决办法
1327
查看次数

WKWebView:获取所选链接的标题

获取在加载到网站上的链接标题的最简单方法是WKWebView什么?

示例:用户点击链接时

<a href="http://www.foo.com">Go to foo</a>
Run Code Online (Sandbox Code Playgroud)

我想获取<a>元素的内容(Go to foo在本例中).

获取链接URL很简单WKNavigationDelegate但我找不到任何直接暴露标题的内容.我设法通过将Javascript注入Web视图来获得标题,但这感觉有点笨拙(见下文).

import Foundation
import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {

    override func viewDidLoad() {
        let webView = WKWebView(frame: view.bounds)
        view.addSubview(webView)
        webView.loadRequest(NSURLRequest(URL: NSURL(string: "http://stackoverflow.com")!))
        webView.navigationDelegate = self
    }

    func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
        print("Link URL: \(navigationAction.request.URL)")

        let script = "function findLink() {" +
                       "var els = document.getElementsByTagName('a');" +
                       "for (var i = 0, l = els.length; …
Run Code Online (Sandbox Code Playgroud)

ios swift wkwebview

5
推荐指数
0
解决办法
794
查看次数

Javascript中是否存在错误类型?

我会问一下java脚本错误,有没有像php或其他类似的错误,

例子:在php中我们已经注意到,并且Parse Error ..etc通知不会停止php执行,但解析将直接停止执行php代码..

现在是这样的js错误,或者是什么是js分类错误..我知道我们可以通过try,catch ...来处理错误,但是js中有错误是stooped脚本而其他人不会停止执行脚本

谢谢

javascript

4
推荐指数
1
解决办法
2721
查看次数

在Swift中绘制对角线

我想知道是否可以使用UIViews绘制对角线?我已经成功地做了一条直线(垂直/水平),但我找不到旋转线的方法.

谢谢您的帮助!

cocoa-touch ios autolayout swift

4
推荐指数
1
解决办法
3304
查看次数