小编ric*_*chy的帖子

重载数据后,UICollectionView单元格保持突出显示

UICollectionView在单元格内部有标签,可以定期自动更改.当此更新触发时,我调用reloadDataUICollectionView并设置单元格以更改背景颜色[UICollectionViewCell setHighlighted:].

问题是如果用户按住某个单元格然后进行更新,则当用户释放该单元格时会保持突出显示并且也不能再进行选择.

我注意到dequeueReusableCellWithReuseIdentifier:forIndexPath:reloadData之后在单元格上调用setHighlighted.

我也试过reloadSections:而不是reloadData,这解决了细胞被"卡住"的问题,但是当它被调用时会导致细胞淡出并进入细胞.

将呼叫置于内部performBatchUpdates:似乎也无法解决问题.

objective-c reloaddata ios uicollectionview

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

NSAttributedString中行尾的NSKernAttributeName空格

使用NSKernAttributeName它时在每行的末尾放置一个空格,有什么方法可以解决这个问题吗?我可以将属性设置为:

NSRange(location: 0, length: self.text!.characters.count-1)
Run Code Online (Sandbox Code Playgroud)

但我不想为每一行设置这个.

这是我正在使用的游乐场的测试代码

//: Playground - noun: a place where people can play

import UIKit
import XCPlayground

var text = "Hello, playground\nhow are you?"

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.paragraphSpacing = 50
paragraphStyle.alignment = NSTextAlignment.Left
paragraphStyle.lineBreakMode = NSLineBreakMode.ByTruncatingTail

let attributes = [
    NSParagraphStyleAttributeName: paragraphStyle
    , NSKernAttributeName: 20
]


let attributedString = NSAttributedString(string: text, attributes: attributes)

let label = UILabel()
label.attributedText = attributedString
label.numberOfLines = 0
label.textColor = UIColor.greenColor()
label.backgroundColor = UIColor.orangeColor()
label.sizeToFit()
label.center = CGPoint(x: …
Run Code Online (Sandbox Code Playgroud)

nsattributedstring ios swift

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

多个开发者帐户上的多个 Apple Pay 商家 ID

我有一个项目有许多不同的构建配置,一个开发者帐户有 4 个,另一个有 3 个,每个都有生产、alpha 和 beta 构建配置,第一个有调试配置。所有 7 个都有不同的包 ID

每个开发者帐户都使用自己的一组 Apple Pay 商家 ID 申请支付设置。

我收到一个错误,即一个构建配置的配置文件缺少对另一个开发者帐户的商家 ID 的支持,反之亦然,如果我从另一个开发者帐户中删除构建配置,它们可以正常工作,但是当它们都在项目中时,就会出现错误.

有解决方法吗?我是否错过了告诉构建配置仅使用它自己的商家 ID 的内容?

xcode ios applepay

6
推荐指数
1
解决办法
750
查看次数

UIImagePickerController(sourceTypeCamera)未填充顶部/状态栏上的屏幕

我从我的MainViewController调用UIImagePickerController(sourceTypeCamera)作为modalViewController.但是,UIImagePickerController不会将屏幕填满顶部,如附带的图像所示. UIImagePickerController的奇怪行为 知道是什么导致这个,以及如何解决?

iphone uiimagepickercontroller uistatusbar

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

来自zIndex的UICollectionView顶部单元格未使用重叠单元格选择

我有UICollectionView一些相互重叠的细胞.

我将它们设置zIndexUICollectionViewLayout子类中,UICollectionViewLayoutAttributes因此它们以可视方式显示在所需的顺序中.触摸均匀的命中区域按预期工作,当敲击单元的重叠区域时zIndex,通过该collectionView:didSelectItemAtIndexPath:方法具有更高的单元格.

我转换到UICollectionViewFlowLayout子类,当我转换回第一UICollectionViewLayout个子类zIndex时,在点击重叠区域时,并不总是选择具有更高的单元格.

进一步调查显示,子视图中UICollectionViewCells 的顺序UICollectionView是确定敲击哪个单元格.

我已经写了一个重新排序子视图的方法,但这看起来有点像黑客.

根据细胞在视觉上的显示方式,是否有更好的方法让UICollectionView细胞返回预期的索引路径collectionView:didSelectItemAtIndexPath:

iphone z-index objective-c ios uicollectionview

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

convertRect:toView:返回双倍大小和距原点两倍的距离

我将图像视图传递给需要图像视图大小的init方法.然后调用convertRect:toView:

- (id) initWithImageView:(UIImageView*) imageView {
    self = [super init];
    if (self) {
        CGRect imageViewFrame = [[imageView superview] convertRect: imageView.frame toView: self.view];
    }
}
Run Code Online (Sandbox Code Playgroud)

这被称为:

MyViewController *viewController = [[MyViewController alloc] initWithImageView:imageView];
viewController.delegate = self;
[self.tabBarController presentViewController:viewController animated:NO completion:nil];
Run Code Online (Sandbox Code Playgroud)

然后是imageViewFrame

(origin = (x = 0, y = -120.22867049625003), size = (width = 750, height = 750))
Run Code Online (Sandbox Code Playgroud)

imageView有一个框架

frame = (0 -60.1143; 375 375);
Run Code Online (Sandbox Code Playgroud)

它的超级视图有一个框架

frame = (0 0; 375 254.5);
Run Code Online (Sandbox Code Playgroud)

为什么它会扩大到x2?

在iPhone 6 plus(3x)模拟器上进一步测试使imageViewFrame成为可能

(origin = (x = 0, y = …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch uikit uiview ios retina-display

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

具有线程EXC_BAD_ACCESS的Objective-c递归块

我在objective-c中有一些导致EXC_BAD_ACCESS错误的递归块代码.

- (void) doSomethingWithCompletion:(void (^)())completion {
    if (completion) {
        dispatch_async(dispatch_get_main_queue(), completion);
    }
}

- (void) testBlocks {

    NSString *testString = @"hello";

    __block NSInteger count = 0;

    __block __weak void (^weak_block)(NSString *);
    void(^strong_block)(NSString *);
    weak_block = strong_block = ^(NSString *str) {

        [self doSomethingWithCompletion:^{
            NSLog(@"number: %zd", count);
            if (++count < 10) {
                weak_block(str);
            }
        }];


    };
    strong_block(testString);
}
Run Code Online (Sandbox Code Playgroud)

错误发生在weak_block(str)上,我假设是因为它在调用dispatch_async时被释放.当它用__block声明时,调用strong_block(str)就像这样:

__block void(^strong_block)(NSString *);
Run Code Online (Sandbox Code Playgroud)

导致警告'强调'捕获'strong_block'在此块中强烈可能导致保留周期'.

所以我改变了testBlock方法,不使用弱引用,如下所示:

- (void) testBlocks {

    NSString *testString = @"hello";

    __block NSInteger count = 0;

    __block void (^inner_block)(NSString *);
    void(^strong_block)(NSString …
Run Code Online (Sandbox Code Playgroud)

recursion objective-c grand-central-dispatch objective-c-blocks

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

“允许[应用名称]拨打和管理电话”权限和READ_PHONE_STATE

我有一个专为Android开发的Unity应用(v5.2.4),正在寻求对Android(v6.0.1)上的“拨打和管理电话”的许可。做一些研究,似乎它可能与READ_PHONE_STATE有关。

因此,在构建apk之后,我取消了READ_PHONE_STATE权限,将其重新打包,消息不再出现。

我不确定100%是否将READ_PHONE_STATE放入应用中,团结论坛说READ_PHONE_STATE是在unity v5.2中删除的。

该应用程序还使用Urban飞艇,对READ_PHONE_STATE进行grep显示城市飞艇bin文件。

$ grep "READ_PHONE_STATE" -Rl . 
./Submodules/ua-unity-plugin/build/intermediates/lint-cache/api-versions-6-23.0.1.bin
Run Code Online (Sandbox Code Playgroud)

我想知道的是,将许可放入清单中是什么?

android unity-game-engine android-manifest android-permissions android-6.0-marshmallow

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

Swift Equatable 泛型函数内的泛型类型比较

我有一个Node二叉树类,如下所示:

class Node<T: Equatable> {
    let value: T
    let left: Node<T>?
    let right: Node<T>?

    init(value: T, left: Node<T>? = nil, right: Node<T>? = nil) {
        self.value = value
        self.left = left
        self.right = right
    }
}
Run Code Online (Sandbox Code Playgroud)

这些值必须是相等的。

我可以这样测试公平性:

let a = Node(value: 8)
let b = Node(value: 7)

let c = a.value > b.value
Run Code Online (Sandbox Code Playgroud)

效果很好,c: true

但是当我编写一个使用节点公平性的通用函数时,我收到错误:

func isBinaryTree<T>(node: Node<T>) -> Bool {
    if let leftNode = node.left {
        guard leftNode.value < node.value else {
            return false …
Run Code Online (Sandbox Code Playgroud)

generics swift equatable

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

lineSpacing是UILabel的属性吗?

我有一个UILabel的子类,其属性lineSpacing设置如下:

var lineSpacing = CGFloat(20.0)
Run Code Online (Sandbox Code Playgroud)

当我在这里使用它时,它会推送文本,即使它没有用于任何东西,我删除了除该属性之外的所有代码:

class CustomLabel : UILabel {
    var lineSpacing = CGFloat(20.0)
}
Run Code Online (Sandbox Code Playgroud)

并且它仍然是推高了,我改变了属性的名称,并将其固定它,我只是想知道,这是从我无法访问来lineSpacingUILabel

regularLabel.lineSpacing
Run Code Online (Sandbox Code Playgroud)

给出错误.

subclass uilabel swift

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

包含.h文件时clang复制符号

可能重复:
标头变量的obj-c重复符号

我的项目中有多个.m和.mm文件.我可以在我喜欢的.m文件中包含这个.h文件(那个dosent有一个相应的.m或.mm文件)但是当我把它包含在一个以上的.mm文件中时,我得到了重复的符号链接器错误.

同样在.h文件中,我用预处理器命令包围了内容(这些是在obj-c中被尊重吗?)这里看起来像是这样的:

#ifndef _CONFIG_H_
#define _CONGIF_H_

CGFloat WIDTH, HEIGHT;
// other similar code...

#endif
Run Code Online (Sandbox Code Playgroud)

我在WIDTH和HEIGHT上得到重复的符号错误

c objective-c header-files ios

0
推荐指数
1
解决办法
1240
查看次数