小编Imo*_*tep的帖子

在TextView中获取文本的大小

将textView放在指定中心的x和y坐标上时遇到问题.首先,我尝试在textView中设置文本,并使用此链接移动视图的宽度和高度 .

但它不起作用,我想尝试别的东西.我想知道是否有一种方法可以获得指定文本在textView中的大小?我的意思是,我知道文本和textSize,我如何获得textView将采用的宽度和高度?

(NSString)sizeWithFont;对于那些了解iPhone开发者的方法有点像.

android textview text-size android-layout

40
推荐指数
3
解决办法
4万
查看次数

提出一个透明的模态UIViewController

我正在尝试自己制作一个自定义alertView(适用于iOS7 +),但我在使用alertView演示文稿时遇到了困难.

我有一个黑色背景的UIViewController(alpha设置为0.25f),以及一个alertView作为子视图.

当我想显示alertView时,我以模态方式呈现viewController:

-(void) show 
{
    UIWindow* window = [[UIApplication sharedApplication] keyWindow];
    self.modalTransitionStyle = UIModalPresentationCustom;
    self.transitioningDelegate = self;
    [window.rootViewController presentViewController:self animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

这是我的动画师对象:

-(NSTimeInterval) transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext
{
    NSLog(@"%s",__PRETTY_FUNCTION__);
    return 2;
}

-(void) animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
    NSLog(@"%s",__PRETTY_FUNCTION__);

    UIView* toView = [transitionContext viewForKey:UITransitionContextToViewKey];
    toView.alpha = 0;

    UIView* container = [transitionContext containerView];
    [container addSubview:toView];

    [UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
        toView.alpha = 0.5;
    } completion:^(BOOL finished) {
        [transitionContext completeTransition:YES];
    }];
}
Run Code Online (Sandbox Code Playgroud)

事情是:模态VC在背景中呈现VC呈现淡化,但是当动画结束时,呈现VC将从背景中移除.

如果我[transitionContext completeTransition:YES];改为调用,则呈现VC在后台但是在动画结束时删除了模态VC,所以如果我们发送'NO',我猜上下文取消了演示.

有没有办法将演示VC保留在后台而不必创建它的快照并将其设置为模态VC视图的背景?

uiviewcontroller modalviewcontroller ios custom-transition

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

XCode中的动态存档名称

我正在更新我的存档过程以使其更易于使用.

我已经创建了一些方案和构建配置,避免我手动更新2个档案之间的常量,但现在我想更深入.

编辑方案时,"存档"部分允许我们设置存档名称.默认情况下,它设置为方案名称,但我想让它动态化.例如,我喜欢它<CFBundleIdentifier>-<CFBundleShortVersionString>-<CFBundleVersion>.

这甚至可能吗?如果有,怎么样?

xcode archive ios

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

Xcode继续使用旧的框架版本

从我的项目开始,我使用自定义框架,我们称之为"custom.framework".但是这个框架中存在一个错误,现在我想使用另一个版本的"custom.framework".

首先,我只是从我的项目中删除了"custom.framework"文件并添加了新文件.但没有改变,虫子仍在那里.

经过多次尝试和小时后,我明白Xcode会在内存中添加旧版本并使用此版本而不是新版本.我知道,因为在新版本中我添加了一个方法,当我cmd +单击该类时,我将方法添加到其中,它不在那里,文件的路径不可用.

通过网络搜索,我尝试将一些版本参数更改为我的框架项目:兼容版本,Curent Library版本,Framework版本.但这并没有改变Xcode继续使用旧版本.

我还尝试将框架的项目作为子项目,并将生成的框架作为依赖项添加到我的目标.它工作得很好,但由于框架的项目位于一个独立的远程git存储库中,我认为这不是一个可接受的解决方案.

所以我的最后一次尝试是构建一个"custom2.framework",以强制Xcode使用真实文件,而不是一些缓存版本.但同样,它不起作用,在构建时我得到错误告诉我,custom2.framework中的所有类都是其"custom.framework"缓存版本的重复符号.

所以我的问题很简单:我怎么能最终告诉Xcode删除它的缓存旧版本并让我使用我给他的文件?我已经尝试删除我的项目的derivedData但它似乎缓存框架不存在....我是如此绝望:(

编辑:这里有2个截图来说明问题

第一个屏幕截图是当我从项目导航器中的.framework对象打开文件时Xcode所示的路径. 从项目导航器

第二个屏幕截图是当我从cmd +单击打开文件到代码中的"DCEquipmentManager"时Xcode所示的路径. 在此输入图像描述

如您所见,与代码链接的框架不是项目中的框架.

xcode caching frameworks objective-c ios

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

iOS 8中的UITableViewHeaderFooterView

我有一个UITableViewHeaderFooterView,我在其中更改textLabel字体和背景颜色

UITableViewHeaderFooterView* header = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"header"];
if(!header)
{
    header = [[UITableViewHeaderFooterView alloc] initWithReuseIdentifier:@"header"];
    [header.textLabel setFont:[UIFont boldSystemFontOfSize:15]];
    [header.contentView setBackgroundColor:[UIColor colorWithRed:213/255.0 green:213/255.0 blue:213/255.0 alpha:1]];
}
Run Code Online (Sandbox Code Playgroud)

以下是iOS 7的显示方式: 在此输入图像描述

以下是iOS 8的显示方式: 在此输入图像描述 setFont:似乎没有在这里生效,或者iOS 8上的iOS 8上的15pt字体更大

以下是我删除setFont:call时iOS 8的显示方式 在此输入图像描述

如您所见,setFont对字体没有影响,但它在textColor上有效.

我错过了什么或者那些是"beta bug"(我使用的是来自XCode6 GM种子的模拟器,我在iOS 5 beta 5的iPhone 5上也有同样的问题)?

编辑: iOS 8版本和XCode 6.0.1似乎无法解决问题

fonts textcolor uitableview ios8

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

UITableViewCell systemLayoutSizeFittingSize:在iOS 7上返回0

我有一个UITableViewCell,UIImage固定在左上角,右边有一个标签:

    -(UITableViewCell*) adCellFromTableView:(UITableView*)tableView
{
    //Build the text
    NSString* adText = NSLocalizedString(@"MyFamily_fremiumAd", nil);
    NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:adText];

    NSUInteger newLineLocation = [adText rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]].location;

    //Set the first line in orange
    NSDictionary* firstLineAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:15],
                                          NSForegroundColorAttributeName:ORANGE};
    [attrString addAttributes:firstLineAttributes range:NSMakeRange(0, newLineLocation)];
    //Set other lines in white
    NSDictionary* otherLinesAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:11],
                                           NSForegroundColorAttributeName:[UIColor whiteColor]};
    [attrString addAttributes:otherLinesAttributes range:NSMakeRange(newLineLocation, adText.length - newLineLocation)];

    //Get the cell
    if (!adCell)
    {
        adCell = [tableUsers dequeueReusableCellWithIdentifier:@"fremiumAd"];
    }

    //Set the text
    UILabel* label = (UILabel*)[adCell viewWithTag:1];
    label.attributedText = attrString; …
Run Code Online (Sandbox Code Playgroud)

uitableview ios autolayout ios7.1 ios8.1

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

Android SQLite事务和多线程

在我的应用程序中,我调用了一些Web服务来更新数据库。每个Web服务调用都是在特定线程中进行的,从而导致多个线程“一次”更新数据库对象。

在每个线程中,我都使用类似的事务:

Thread 1 (webservice 1)
beginTransaction()
insert a row in the table 1
update a row in the table 1
endTransaction()

Thread 2 (webservice 2)
beginTransaction()
update a row in the table 2
update a row in the table 2
endTransaction()
Run Code Online (Sandbox Code Playgroud)

但是我遇到一个问题,在谷歌搜索后我无法回答自己。由于事务是在不同的线程中处理的,它们是否彼此不同?换句话说,数据库使用的是单独的“声明堆栈”还是公共的?

从我的阅读中,我了解到事务在同一堆栈中,即在线程1中提交事务可能会提交表2上的更新。例如,我认为可能发生的DB语句堆栈:

beginTransaction() //Thread 1 begins a transaction
insert a row in the table 1
update a row in the table 1
beginTransaction() //Thread 2 begins a transaction
update a row in the table 2
update a row …
Run Code Online (Sandbox Code Playgroud)

sqlite multithreading android transactions android-sqlite

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

tvOS启动映像不可见

我正在创建一个tvOS应用程序,并且使用启动映像苦战了2天。它曾经正确显示过,但是由于几天前不再显示启动图像,而是显示了模糊。

我检查了图像,但它不使用Alpha通道,尽管在其他tvOS中,我在启动图像上使用了Alpha通道并显示了该图像(并在上载到商店时被接受)。目标已正确设置为使用launchImage。

出于想法,我最终创建了一个新的singleview tvOS项目,并将有效项目的启动映像设置为launchImage。而且它仍然无法正常工作。

由于未知的原因,launchImage在某个时候显示,但是我无法复制它。然后,我尝试多次清理构建文件夹,在9到12之间更改部署目标,设置为“不启动映像”,然后切换回去,在构建之前从模拟器或设备中删除该应用程序……无济于事。

到底是怎么回事?

编辑:所以,我已经下载了tvOS 11.4模拟器。首先尝试使用11.4模拟器,并在其上显示启动图像。之后重新打开tvOS 12模拟器,现在还会显示启动映像。我杀了模拟器,并在两个版本上都尝试过:没有启动映像。

我只是不明白发生了什么。

编辑2:好像我找到了一个模式:启动图像仅显示应用程序是否在与应用程序在模拟器上安装的同一会话中启动,而不是自安装以来第一次启动。在所有其他情况下,请不要启动映像。

例子: run 1 (simulator launch and app installation) setup: app not installed, simulator not running result: launchImage is not shown

run 2 (app new launch): setup: app already installed, simulator already running result: launchImage is shown

run 3 (app new launch): setup: app already installed, simulator already running result: launchImage is shown

现在我关闭模拟器。

run 4 (app installation): setup: app already installed, simulator not running result: launchimage is …

xcode ios launchimage tvos

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

每个应用程序的语言设置是 iOS 13 独有的功能吗?

几个月前,我读到了Apple 的这篇文章,发现在 iOS 13 上我们可以直接从“设置”应用程序中选择应用程序的语言。现在,iOS 14 beta 6已安装在测试iPhone上,“首选语言”部分不再存在。该功能是在 iOS 14 中被删除还是 Beta 版的某些错误?这似乎与应用程序是否使用 iOS 14 SDK 构建无关,因为 App Store 中的 Facebook 不会显示该部分。

settings localization ios ios13 ios14

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

Android sqlite和多个查询

为了填充我的数据库,我有一些这样的循环:

for (int i=0;i<something;++i){
   myDatabase.insert(...);
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,需要很长时间.所以我想知道如何改善运行时?我试着只打一次这样的插入:

String queries="";
for (int i=0;i<something;++i){
   queries += "my query;";
}
myDatabse.execSQL(queries);
Run Code Online (Sandbox Code Playgroud)

但execSQL函数只插入第一个查询,而不插入其他查询.那我该怎么办?

sqlite android query-optimization

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

在应用结算中进行测试

我将已签名的应用程序上传到Android市场,我在应用程序内容中发布了一些我已发布的内容(但不是应用程序).现在我尝试在真实设备上购买我自己的产品:我是否需要使用我上传到市场的相同签名.apk进行测试?或者我可以用Eclipse启动的"普通"?

因为当我使用Eclipse启动我的应用程序并发送requestPurchase()时,弹出窗口告诉我此应用程序版本尚未准备好进行市场购买...

您无需发布应用程序即可使用真实产品ID执行端到端测试; 您只需将应用程序上传为草稿应用程序.但是,在将其作为草稿应用程序上载之前,您必须使用发布密钥对应用程序进行签名.此外,上载的应用程序的版本号必须与您加载到设备以进行测试的应用程序的版本号相匹配.

正如它在google的doc上写的那样,市场上的应用程序和设备上的应用程序的版本号是相同的:/

android in-app-billing google-play

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