我使用的是iOS 6,所以归因字符串应该很容易使用,对吧?嗯......不是那么多.
我想做的事:
使用自定义子类UIButton(它不做任何自定义titleLabel),我想要一个多行,属性标题,即:
到目前为止,我已经能够获得#1到5(至少,我认为我做过,但是当前的测试会产生多行文本错误),但是当我尝试做某事(任何东西!)时要居中的文本,我的应用程序不断崩溃.当我尝试使所有6个项目工作(通过各种方法)时,我得到以下崩溃/错误:
Terminating app due to uncaught exception
'NSInternalInconsistencyException', reason:
'NSAttributedString invalid for autoresizing,
it must have a single spanning paragraph style
(or none) with a non-wrapping lineBreakMode.'
Run Code Online (Sandbox Code Playgroud)
根据我的尝试,似乎我可以有以下选项之一,但不是两个:
如果必须的话,我可以与其中一个生活在一起,但我无法相信我不能拥有一个看起来相当简单的概念.
谁能告诉我我错了什么?
这是我正在尝试的代码的最后一次迭代:
NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setAlignment:NSTextAlignmentCenter];
[style setLineBreakMode:NSLineBreakByWordWrapping];
UIFont *font1 = [UIFont fontWithName:@"HelveticaNeue-Medium" size:20.0f];
UIFont *font2 = [UIFont fontWithName:@"HelveticaNeue-Light" size:20.0f];
NSDictionary *dict1 = @{NSUnderlineStyleAttributeName:@(NSUnderlineStyleSingle),
NSFontAttributeName:font1}; …Run Code Online (Sandbox Code Playgroud) 我正在开发一个内部的iOS应用程序,它需要只读访问带有多个数据库的SQL Server.我知道这里的股票答案是"写一些Web服务",但我想要一个独立的解决方案.有没有办法从iOS应用程序直接连接到SQL Server数据库?我在想类似于基本的ODBC连接.
我见过很多用户都在问这个问题,但除了"编写网络服务"之外,答案很少.这真的是唯一的方法吗?
我觉得这将是围绕AutoResizingMasks的一个简单的答案,但我似乎无法围绕这个主题.
我有一个iPad应用程序并排显示2个UITableViews.当我从纵向旋转到横向并返回时,UITableView中的单元格在旋转发生时即时完美地调整大小.我正在使用UITableViewCellStyleSubtitle UITableViewCells(暂时不是子类),我在IB中设置UITableView以锚定到顶部,左侧和底部边缘(对于左UITableView)并具有灵活的宽度.
我正在提供我自己的UIView对象
- (UIView *)tableView:(UITableView *)tableView
viewForHeaderInSection:(NSInteger)section
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所做的(从另一个类中称为类方法):
+ (UIView *)headerForTableView:(UITableView *)tv
{
// The view to return
UIView *headerView = [[UIView alloc]
initWithFrame:CGRectMake(0, 0, [tv frame].size.width, someHeight)];
[headerView setAutoresizingMask:UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin];
// Other layout logic... doesn't seem to be the culprit
// Return the HeaderView
return headerView;
}
Run Code Online (Sandbox Code Playgroud)
所以,在任何一个方向,一切都像我想要的那样加载.轮换后,如果我手动调用reloadData或等到我的应用程序触发它,或滚动UITableView,headerViews将调整大小并正确显示自己.我无法弄清楚的是如何正确设置AutoResizeMask属性,以便标题将像单元格一样调整大小.
我正在尝试编写一个Android应用程序,模仿我编写的iOS应用程序中已存在的功能.我正在与2个不同的BLE设备连接:
在iOS上,我有两个设备都运行良好并报告数据.在Android上,我无法让它工作.经过数小时的研究和测试,我认为我要解决的基本问题是:
在iOS上,我调用以下代码以使BLE设备在有数据要报告时通知我的iOS设备:
#pragma mark - CBPeripheralDelegate Protocol methods
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error {
for (CBCharacteristic *characteristic in [service characteristics]) {
[peripheral setNotifyValue:YES forCharacteristic:characteristic];
}
}
Run Code Online (Sandbox Code Playgroud)
而已.iOS中此方法的注释说明如下:
如果指定的特性配置为允许通知和指示,则调用此方法仅启用通知.
基于此(以及它在iOS中工作的事实),我正在计算我想要通知的特性的配置描述符应该像这样配置:
descriptor.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
gatt.writeDescriptor(descriptor);
Run Code Online (Sandbox Code Playgroud)
考虑到这一点,我的BLEDevice班级看起来像这样:
public abstract class BLEDevice {
protected BluetoothAdapter.LeScanCallback mLeScanCallback;
protected BluetoothGattCallback mBluetoothGattCallback;
protected byte[] mBytes;
protected Context mContext;
protected GotReadingCallback mGotReadingCallback;
protected String mDeviceName;
public final static UUID UUID_WEIGHT_SCALE_SERVICE
= UUID.fromString(GattAttributes.WEIGHT_SCALE_SERVICE);
public final static UUID UUID_WEIGHT_SCALE_READING_CHARACTERISTIC
= UUID.fromString(GattAttributes.WEIGHT_SCALE_READING_CHARACTERISTIC); …Run Code Online (Sandbox Code Playgroud) 我正在努力创建一个我希望销售的iOS静态库.我已经完成了初始构建的步骤并生成了.a/.h输出.
当我将这些文件包含在一个单独的项目中时,我看不到任何方法来浏览.a文件中的内容.
但是,当我的库中的一行代码崩溃应用程序时(就像我说的那样,它仍处于开发阶段),调试器向我显示整个类(.m)文件.怎么了?
我真的不明白静态库的内容是什么,我不确定我是否为模拟器和设备编译了该版本.这可能与它有关吗?如果是这样,有人可以解释原因吗?
谢谢!!!
我正在开发一个应用程序,左侧有一个"抽屉"非常有用.我正在做一些初步测试,看看我最好能做到这一点,而且我遇到了一些非常基本的麻烦.
我的设置
1.我在Xcode 4中使用单视图应用程序模板
.2.在xib的"主/边界"视图中,我添加了2个UIViews(LeftPanel和RightPanel)和一个UIButton(ShowHideButton).
我为LeftPanel绿色和RightPanel蓝色着色,以便更容易看到.
4.加载视图时,两个面板都可见,UIButton的文本为"隐藏面板".
5.按下按钮后,LeftPanel应滑离屏幕(向左),RightPanel应展开以占据其原始空间加上LeftPanel腾出的空间.
6.此时,ShowHideButton应将其文本更改为"显示面板".
7.再次按下按钮后,LeftPanel应向后滑动到屏幕上(从左侧),RightPanel应缩小到"将其返回"原始空间.
8.此时,ShowHideButton应将其文本更改回"隐藏面板".
我正在使用实现动画animateWithDuration:animations:completion:.到目前为止,过渡关闭屏幕工作正常(非常好,其实).
令我不安的是,当我尝试将LeftPanel"带回"时,我得到了一个EXC_BAD_ACCESS.我已经在下面发布了我的代码,我已经看了它,但我真的看不到我正在访问的内容(或者是导致EXC_BAD_ACCESS的任何内容).
DrawerTestingViewController.h
#import <UIKit/UIKit.h>
typedef enum {
kHidden,
kShown
} PanelState;
@interface DrawerTestingViewController : UIViewController {
PanelState currentState;
UIButton *showHideButton;
UIView *leftPanel;
UIView *rightPanel;
}
@property (assign, nonatomic) PanelState CurrentState;
@property (strong, nonatomic) IBOutlet UIButton *ShowHideButton;
@property (strong, nonatomic) IBOutlet UIView *LeftPanel;
@property (strong, nonatomic) IBOutlet UIView *RightPanel;
- (IBAction)showHidePressed:(id)sender;
@end
Run Code Online (Sandbox Code Playgroud)
DrawerTestingViewController.m
#import "DrawerTestingViewController.h"
@implementation DrawerTestingViewController
@synthesize CurrentState = currentState;
@synthesize LeftPanel = leftPanel; …Run Code Online (Sandbox Code Playgroud) 我有一个显示图像的UIImageView.我想通过绘制圆角矩形轮廓来"突出显示"图像的一部分.我希望用粗虚线绘制轮廓,通过不断变化线的"开始"开始的地方"动画".
我想要绘制一个具有我想要的外观的圆圈,然后简单地为它制作动画,但我真的需要一个矩形解决方案,所以这就是了.
背景:
我通过计算8个点并绘制4条直线和4条曲线来绘制圆角矩形边框.(也许这可以更容易,但它不是破碎的部分!)
我的想法是,我将使用一个"偏移"变量,该变量从圆角矩形的左上角开始,左上角的曲线与顶部的直线曲线相交.然后,我将在圆角矩形的顶部增加这个"偏移",直到它到达右上曲线,然后我将"偏移"变量"重置"为其原始值.
这很像我想要的,直到"重置"发生.此时,动画是生涩的(预期的那种),但在恢复"前进"动作之前,它似乎也会在一小部分时间内反向行进.最后,在我的虚线的开头/结尾,我在虚线上得到一个超长段.我知道它们不可能都是等长的(它们可以吗?如何计算?),但是如何制作2个较短的段而不是1个较长的段?
任何人都知道我能做些什么来获得顺畅的"行军蚂蚁"的样子?一个好的方法(使用动画)的任何其他想法将用户的眼睛调用到屏幕的特定区域?(它需要包围特定区域而不会遮挡它.)
当前代码:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
// Rounded corner will be 10% of average side length (i.e., (w + h) / 2)
float averageSide = ([self HighlightRect].size.width + [self HighlightRect].size.height) / 2.0;
float roundSize = averageSide * 0.10;
// offset is a static, class variable
offset += roundSize / 4.0;
if ([WhereIAmView offset] < roundSize) {
offset = roundSize;
}
if ([WhereIAmView offset] > ([self HighlightRect].size.width - roundSize)) { …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序从SOAP Web服务获取信息,我想在一个显示结果UITableView.
我有一个以前版本的这个应用程序,我正在创建一个新版本,基本上清理东西,摆脱一堆已弃用,不再使用的遗留代码.
在之前的版本中,这很有效.在新版本中,没有那么多.
基本上,当前场景返回3个字符串,我试图用作我的数据的基础UITableView.
我正在努力解决这个问题,因为它太难以追查EXC_BAD_ACCESS错误了!
(顺便说一句,如果有人有办法使调试体验更像Visual Studio,我很乐意听到它!没有任何想法导致错误,并且无法通过我查看,这是非常令人沮丧的崩溃时的局部变量,看看是什么.我已经在异常断点中添加了,但这似乎并不多.)
无论如何,导致出错的行是:
return [[self Libraries] count];
Run Code Online (Sandbox Code Playgroud)
它发生在tableView:numberOfRowsInSection:.
错误消息我得到APPEARS引用应该存储在中的字符串NSMutableArray [self Libraries].
这里发生了什么?
我正在使用ARC,所以不应该正确处理所有内存管理吗?
ANYWHERE我的代码中没有任何手动发布声明!
请帮我解决这个问题!
我从VB.NET背景来到Objective-C,其中switch语句是,Select Case并且break不需要(或可能)语句.
我知道一般规则是break在每个case语句的末尾放置一个语句,以便执行不会"落到"下一个case语句.
在编写iOS应用程序时,我经常switch在我的-tableView: heightForRowAtIndexPath:方法中使用语句.基本上,我经常让我的单元格报告所需的高度,所以我最终得到这样的switch陈述:
switch (indexPath.row) {
case 0:
return ...
break;
case 1:
return ...
break;
...
default:
return ...
break;
}
Run Code Online (Sandbox Code Playgroud)
我看到了这个答案,这对我来说是有道理的,也是我期望答案的答案,但这个问题是关于Java的,我想看看Objective-C是否也有同样的答案.
我也找到了这个与C相关的答案,我认为这也是Objective-C的正确答案.
那么,return声明是一种专门的break声明吗?
我目前正在建立一个数据库.这些表都已完成,现在我正在添加我的存储过程.我也在使用tSQLt和Red Gate的SQL测试编写测试.由于这如何将信息添加到数据库(每个测试都是自己的存储过程,加上有大量的tSQLt存储过程),我得到了非常非常大量的存储过程.
我发现我在对象资源管理器窗口中上下滚动很多,因为我在表列表之间来回移动(根据数据结构为每个表编写几个测试)和存储过程列表(当我需要为失败的测试创建/更新存储过程.
我已经将我的对象资源管理器和我的SQL测试窗口分成了一个单独的显示器(55英寸电视FTW上的Apple TV Airplay!),但我发现一点调整可以帮助我.
通常,我在我的表列表的一个范围和我的存储过程列表的一个范围内工作,所以如果我有两个窗口,我可以设置一个到我的表列表的相关区域,一个到我的相关区域sproc列表,限制或消除我的滚动.
每次我尝试从"视图"菜单中选择"对象资源管理器"时,它只会突出显示当前打开的实例.有没有办法得到其中2个?是否有其他解决方法可以获得相同的效果?