小编aka*_*lar的帖子

如何在iOS上将UILabels中文本的基线与不同的字体大小对齐?

我需要在UILabels中对齐文本的基线.我目前正在做的是我正在调整包含文本的UILabel的基线,当两个标签中的文本字体大小不同时,这会导致对齐的UILabels基线但未对齐的文本基线(未对齐的小幅度,但仍然错位).标签包含在自定义UIView子类中,因此self引用包含的UIView.

这是相关的代码

[self.mySmallLabel sizeToFit];
[self.myBigLabel sizeToFit];

self.mySmallLabel.frame = CGRectMake(0,     
                                     self.bounds.size.height - self.mySmallLabel.bounds.size.height, 
                                     self.mySmallLabel.bounds.size.width, 
                                     self.mySmallLabel.bounds.size.height);

self.myBigLabel.frame = CGRectMake(self.mySmallLabel.frame.origin.x + self.mySmallLabel.bounds.size.width, 
                                   self.bounds.size.height - self.myBigLabel.bounds.size.height, 
                                   self.myBigLabel.bounds.size.width, 
                                   self.myBigLabel.bounds.size.height);
[self.mySmallLabel sizeToFit];
[self.myBigLabel sizeToFit];
Run Code Online (Sandbox Code Playgroud)

此代码导致下面链接的图像中的对齐.

Misalignemnt

如您所见,即使UILabel基线对齐,文本的基线也会略微偏移.如何动态对齐文本的基线(因为字体大小可能会在运行时更改)?

iphone ios4 ios

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

Xcode 5调试器不打印对象

在升级到xcode 5后,我在控制台上使用lldb调试器进行调试时出现问题.我曾经打字po object并且它曾经工作正常,但是现在我得到了错误

error: instance method 'performBlock:afterDelay:' has incompatible result types in different translation units ('id' vs. 'void')
note: instance method 'performBlock:afterDelay:' also declared here
Run Code Online (Sandbox Code Playgroud)

这是堆栈的屏幕截图,调试器停在的代码,可视化调试器和调试器控制台中的值.可能是什么问题,是xcode 5中的一个错误还是我可以做些什么来纠正这个问题?

xcode objective-c ios lldb xcode5

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

在 iOS 上运行时更改 Firebase 配置

对于我的项目,我有 2 个环境:

  • 测试
  • 产品

和 2 个本地化:

  • tr

以及每个组合的应用程序:(这些名称不反映 Firebase 项目 ID)

  • test_cn
  • test_tr
  • prod_en
  • prod_tr

我为项目中的每个应用程序都有一个单独的 plist 文件,名称为Firebase-(app_type).plistieFirebase-test_en.plistFirebase-prod_en.plist

我正在FIRApp使用这种方式初始化:

private func ensureLoaded() {
    let options = FIROptions(contentsOfFile: Bundle.main
        .path(forResource: "Firebase-\(firebaseApplicationName)", ofType: "plist"))!

    if nil == FIRApp(named: firebaseApplicationName) {
        FIRApp.configure(withName: firebaseApplicationName, options: options)
    }
}
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常,直到我尝试实际连接到 firebase 数据库,它说:

Firebase 配置不正确,请调用【FIRApp 配置】

所以我的问题是,如何让 firebase 在我想要动态更改配置的地方工作?还有一些其他问题描述了如何根据一些环境变量/编译器标志更改配置,但它们都是指更改plist文件,这会在构建时更改配置,但我想在运行时动态更改它。它是否完全受支持,有没有办法让它工作?

提前致谢。

ios firebase

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

检测wifi是否已打开 - iOS

我在一些应用程序中看到,有一个警告说"打开Wi-Fi时位置准确性得到改善.转到设置打开wifi",然后有2个按钮,"取消"或"设置",在哪种情况下,它会将您重定向到设置页面.他们如何确定wifi是打开还是关闭?我不是要求可达性状态,因为互联网连接不是一个问题,我关心的是位置准确性,因为wifi提高了准确性,我想知道它是否打开,无论通过wifi连接互联网.提前致谢!

编辑:

在看到评论和答案之后,我想我需要强调一下:我不想找到是否通过WI-FI上网.想想在设置中打开wifi的情况,但手机没有连接到任何Wi-Fi网络.不同之处在于您启用了位置服务.打开wifi可以让你在室内更好地定位,gps卫星可能看不到(即使你没有连接到任何特定的wifi网络,哪里isReachableViaWiFi会返回NO,但实际上wifi已开启,我能够获得更准确的位置)

谢谢!

iphone gps core-location wifi ios

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

通过带有事件的TextInput回调函数来响应Native iOS模拟器的高CPU使用率

我遇到了一个我无法理解的奇怪问题。当我将回调分配给TextInput箭头函数并尝试使事件脱离回调时,ios模拟器开始使用大量CPU,就好像处于无限循环中一样:主线程未被阻塞,但我认为JS线程是。CPU一直高于%100,除非我退出应用程序,否则它不会掉下来。我已经在下面写下了令人反感的代码:

// LoginForm.js
render () {
  return <FormItem onFocus={this.onFocus} onBlur={this.onBlur} />
}
Run Code Online (Sandbox Code Playgroud)

部分FormItem组件的渲染方法呈现这样的:

// FormItem.js
render () {
  const { onFocus, onBlur } = this.props
  <FormInputRow
    ref={ref => (this.formInputRef = ref)}
    {...{
      onFocus,
      onBlur,
    }}
  />
}
Run Code Online (Sandbox Code Playgroud)

和部分FormInputRow组件的渲染方法是:

// FormInputRow.js
render () {
  const { onFocus, onBlur } = this.props
  return (
    <StyledTextInput
      innerRef={ref => (this.textInputRef = ref)}
      onFocus={onFocus}
      onBlur={onBlur}
    />
  )
}
Run Code Online (Sandbox Code Playgroud)

LoginForm.js没有任何问题,如果onFocusonBlur是这样定义的:

// LoginForm.js
constructor (props) …
Run Code Online (Sandbox Code Playgroud)

javascript ios react-native

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

将使用 Celery 和 Redis 的 Flask 应用程序部署到 AWS:直接使用 Elastic Beanstalk 还是 EC2?

我是 Web 开发的新手,我编写了一个小的 Flask API,它使用 Celery 作为消息队列和 Redis 作为代理。我在本地机器上使用redisredis-server和 Celery启动celery -A application.celery worker --loglevel=info,应用程序运行没有问题。

但是我无法让它在 AWS 上工作。现在我正在按照文档部署应用程序,但是当我尝试向我的 API 发送请求时,我收到内部服务器错误,这可能与 Redis 和 Celery 不工作有关。我通过 SSH 连接到 EC2 实例,但由于我是新手,找不到让应用程序运行的方法。

我的问题是:

1) 将应用程序、Redis 和 Celery 部署到 AWS 后,我该如何启动它?Elastic Beanstalk 是自动完成还是我需要做一些事情?

2) 我在哪里可以找到我的应用程序文件?我想我需要从 requirements.txt 手动安装所有需求,并virtualenv在 EC2 实例中设置一个,对吗?

3) 如果我在一个virtualenv. Elastic Beanstalk 的命令行工具会自动部署应用程序并创建负载均衡器和 Auto Scaling 组。创建新实例时,我通过 SSH 进行的安装是否可用,或者我是否需要每次都手动执行此操作,还是有其他方法?

4)我听有人说创建一个EC2实例并手动部署比使用Elastic Beanstalk更好。Elastic Beanstalk 对我有什么作用?使用 Elastic Beanstalk 还是手动部署更好?

谢谢你的帮助!

amazon-ec2 amazon-web-services redis celery flask

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

当stringWithFormat格式没有类型占位符但有参数时会发生什么

假设我有这样的方法

+ (NSString *)stringWithObject:(id)object format:(NSString *)format
{
    NSString *string = [NSString stringWithFormat:format, object];

    NSLog(@"%@", string);

    return string;
}
Run Code Online (Sandbox Code Playgroud)

object参数是从来没有nil,但传递到方法的format参数可能要么是

NSString *formatWithPlaceholder = @"object: %@"
Run Code Online (Sandbox Code Playgroud)

要么

NSString *formatWithoutPlaceholder = @"No object";
Run Code Online (Sandbox Code Playgroud)

所以如果formatWithoutPlaceholder作为格式参数传递给方法,控制台输出是正确的,没有警告或错误,但这会导致其他问题吗?我觉得这样的用法有点不对劲stringWithFormat:.

objective-c nsstring stringwithformat

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

ReactiveCocoa中自动重复倒计时器

我是ReactiveCocoa的新手,有一个问题我还没找到解决办法.我的应用程序中有一个网络请求,它返回要编码的数据,QR码只有30秒有效.网络请求返回a RACSignal并且我将要在该信号中编码的数据发送到我的视图模型.在视图模型中,我将该数据映射到QR图像,并将其作为视图模型界面中的属性公开.在我创建QR图像后,我想更新一个timeLeftString显示"此代码仅在30秒内有效"的属性,但秒数将随着时间的推移而变化,在完成30秒后,我想再次请求获取另一个有效30秒的QR码数据,之后完成另一个请求,获取数据将有效30秒......直到屏幕被解除.我该如何实现呢?

目前我有这个来获取数据:

- (RACSignal *)newPaymentSignal
{
    @weakify(self);
    return [[[[APIManager sharedManager] newPayment] map:^id(NSString *paymentToken) {

        ZXMultiFormatWriter *writer = [ZXMultiFormatWriter writer];
        ZXBitMatrix *result =
            [writer encode:paymentToken format:kBarcodeFormatQRCode width:250 height:250 error:nil];

        if (!result) {
            return nil;
        }

        CGImageRef cgImage = [[ZXImage imageWithMatrix:result] cgimage];
        UIImage *image = [UIImage imageWithCGImage:cgImage];
        return UIImagePNGRepresentation(image);
    }] doNext:^(NSData *data) {
        @strongify(self);
        self.qrImageData = data;
    }];
}
Run Code Online (Sandbox Code Playgroud)

这对于计时器

- (RACSignal *)timeRemainingSignal
{
    @weakify(self);
    return [[[RACSignal interval:0.5 onScheduler:[RACScheduler scheduler]]  //
        startWith:[NSDate date]]                                            //
        initially:^{
            @strongify(self);
            self.expiryDate = …
Run Code Online (Sandbox Code Playgroud)

timer objective-c ios reactive-cocoa

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