小编use*_*132的帖子

Xcode查找并替换所有项目文件

我需要更换NSLogDDLogVerbose的所有文件在当前项目中我的工作...什么是一个简单的方法来做到这一点?(搜索导航器只在其中搜索).

此外,我需要在所有.m文件的开头添加一行.这怎么做得很快?(有超过500个这样的文件.)

macos xcode5

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

UITextField文本不在左侧滚动

我有一个UITextField子类,我已经覆盖了一些方法(见下面的代码).问题是,当我输入它并且文本达到严格边距时,它将不再显示我正在键入的内容.在视图调试模式中,我看到UIFieldEditor文本提交的范围要宽得多.

这是UITextFiled子类代码:

- (instancetype)init
{
    self = [super init];
    if (self) {
       self.edgeInsets = UIEdgeInsetsMake(7, 0, 10, 15);
    }
    return self;
}

- (id)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        self.edgeInsets = UIEdgeInsetsMake(7, 0, 10, 15);
    }
    return self;
}

-(id)initWithCoder:(NSCoder *)aDecoder{
    self = [super initWithCoder:aDecoder];
    if(self){
        self.edgeInsets = UIEdgeInsetsMake(7, 0, 10, 15);
    }
    return self;
}

- (CGRect)textRectForBounds:(CGRect)bounds {
    return [super textRectForBounds:UIEdgeInsetsInsetRect(bounds, self.edgeInsets)];
}

- (CGRect)editingRectForBounds:(CGRect)bounds {
    return [super editingRectForBounds:UIEdgeInsetsInsetRect(bounds, self.edgeInsets)];
}
Run Code Online (Sandbox Code Playgroud)

这是我使用这个类的代码:

// …
Run Code Online (Sandbox Code Playgroud)

uitextfield ios

9
推荐指数
2
解决办法
1671
查看次数

UI 测试 Xcode 中的 128 个字符限制

这个测试失败是因为

超过 128 个字符的最大长度。您可以通过使用自定义 NSPredicate 构建查询来解决此限制,该查询指定要匹配的属性(标签、标题、值、占位符值或标识符)。

func testMessage() {
        app.buttons["BEGIN"].tap()

        let tablesQuery = app.tables
        XCTAssert(tablesQuery.children(matching: .cell).element(boundBy: 0).staticTexts["<EXTREMELY LONG TEXT HERE (200chars)>"].exists)
    }
Run Code Online (Sandbox Code Playgroud)

我如何转换它,以便在测试文本的有效性时解决 128 个字符的限制。

ios xctest xcuitest

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

iOS 应用程序从 Web 应用程序打开,URL 重定向到 Appstore

我有一个可以使用自定义 URL 方案打开的 iOS 应用程序。当使用 url 打开时,应用程序开始接收数据,并立即在应用程序页面上打开应用商店,就像未安装一样。

这可能是什么原因造成的?

url-scheme app-store ios

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

在iOS 7中动态调整标签大小

在iOS 6中,我使用:

CGSize labelSize = [self.text sizeWithFont:self.font constrainedToSize:size lineBreakMode:self.lineBreakMode];
self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y , labelSize.width, self.frame.size.height);
Run Code Online (Sandbox Code Playgroud)

动态调整UILabel的大小.这在iOS 7中不起作用,所以我尝试了:

NSString *text = self.text;
CGFloat width = size.width;
UIFont *font = self.font;
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text
                                                                 attributes:@{ NSFontAttributeName: font }];

CGRect rect = [attributedText boundingRectWithSize:(CGSize){width, CGFLOAT_MAX}
                              options:NSStringDrawingUsesDeviceMetrics
                              context:nil];
CGSize size = rect.size;

self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y , size.width, self.frame.size.height);
Run Code Online (Sandbox Code Playgroud)

这是在UILabel的一个类别中,但这也不起作用......任何想法我应该使用什么?

objective-c uilabel ios7

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

Swift 5 反射获取类属性列表并调用它们

我有一个类使用可以从 objc-c 和 swift 访问的类计算变量。我想测试所有这些以“const”开头的属性。

我有这个:

import UIKit

class MyClass: NSObject {
    @objc class var  constMethod1 : UIColor {
    print("Method1")
    return UIColor.red
  }

  @objc class var  constMethod2 : UIColor {
    print("Method2")
    return UIColor.green
  }
}

var methodCount: UInt32 = 0
let methodList = class_copyMethodList(MyClass.self, &methodCount)

for i in 0..<Int(methodCount){
   let unwrapped = methodList?[i]
    // call method only if it starts with "const"
    let crtMethodStr = NSStringFromSelector(method_getName(unwrapped!))
   print(crtMethodStr)
    
    if crtMethodStr.hasPrefix("const") {
        // call it
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的只是返回数组中的“init”?问题是什么?我在另一个线程上看到,只需添加“@objc”即可解决此问题。另外,如何从重新调整的数组中访问这些变量之一?

ios swift swift5

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

在 Objective-C 模块中使用 swift 时,无法构建 Objective-C 模块

在 iOS 应用程序中,我有一个子项目(不是 cocoapods),其中包含了一个 swift 文件和 ObjC 文件(由 swift 文件使用)。XCode 自动创建了一个桥接文件,但无法构建它,因为框架中显然不允许桥接。我使用的解决方法是将objective-c 标头添加到伞文件中并且它起作用了。现在我需要使用 ObjC 中的 swift 类。我必须define module设置为 YES,生成的文件 Framework-Swift.h 。但是当我尝试在objective-c中导入它时,我得到

无法构建 Objective-C 模块

经过一些谷歌搜索后,我得到的最接近的是这个答案:

啊,明白了。看起来您正在构建一个混合的 Swift 和 Objective-C pod - 如果是这种情况,Xcode 将尝试在生成的 -Swift.h 标头中导入。您需要手动创建标头并为要公开给 Swift 的 Objective-C 类添加导入。

CocoaPods 自动生成一个伞头标头并将其导入到 .modulemap 中,但 Xcode 在生成 -Swift.h 标头时不使用它

但我不确定需要手动创建什么标题。关于在 Objective-C 框架中使用 swift 的任何想法或指针?两种方式?

xcode objective-c ios swift bridging-header

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