小编mbm*_*414的帖子

UIButton上的iOS NSAttributedString

我使用的是iOS 6,所以归因字符串应该很容易使用,对吧?嗯......不是那么多.

我想做的事:

使用自定义子类UIButton(它不做任何自定义titleLabel),我想要一个多行,属性标题,即:

  1. 第一行上的所有大写(我意识到这不是属性的一部分)
  2. 在第一行加粗
  3. 在第一行加下划线
  4. 第二行"正常"重量
  5. 第二行没有下划线
  6. 以两条线为中心

到目前为止,我已经能够获得#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)

根据我的尝试,似乎我可以有以下选项之一,但不是两个:

  1. 多线,居中的标签
  2. 属性标签

如果必须的话,我可以与其中一个生活在一起,但我无法相信我不能拥有一个看起来相当简单的概念.

谁能告诉我我错了什么?

这是我正在尝试的代码的最后一次迭代:

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)

uibutton nsattributedstring ios

56
推荐指数
3
解决办法
5万
查看次数

从本机iOS应用程序查询SQL Server数据库

我正在开发一个内部的iOS应用程序,它需要只读访问带有多个数据库的SQL Server.我知道这里的股票答案是"写一些Web服务",但我想要一个独立的解决方案.有没有办法从iOS应用程序直接连接到SQL Server数据库?我在想类似于基本的ODBC连接.

我见过很多用户都在问这个问题,但除了"编写网络服务"之外,答案很少.这真的是唯一的方法吗?

sql-server ios

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

旋转时自动调整UITableView标题(主要在iPad上)

我觉得这将是围绕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属性,以便标题将像单元格一样调整大小.

resize header mask uitableview ios

11
推荐指数
2
解决办法
8330
查看次数

Android BLE:onCharacteristicChanged永远不会触发

我正在尝试编写一个Android应用程序,模仿我编写的iOS应用程序中已存在的功能.我正在与2个不同的BLE设备连接:

  1. 血压袖带
  2. 计重秤

在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)

android bluetooth-lowenergy android-bluetooth

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

隐藏静态库中的代码(iOS Obj-C)

我正在努力创建一个我希望销售的iOS静态库.我已经完成了初始构建的步骤并生成了.a/.h输出.

当我将这些文件包含在一个单独的项目中时,我看不到任何方法来浏览.a文件中的内容.

但是,当我的库中的一行代码崩溃应用程序时(就像我说的那样,它仍处于开发阶段),调试器向我显示整个类(.m)文件.怎么了?

我真的不明白静态库的内容是什么,我不确定我是否为模拟器和设备编译了该版本.这可能与它有关吗?如果是这样,有人可以解释原因吗?

谢谢!!!

xcode static objective-c ios

10
推荐指数
2
解决办法
3857
查看次数

iOS:滑动UIView开/关屏幕

我正在开发一个应用程序,左侧有一个"抽屉"非常有用.我正在做一些初步测试,看看我最好能做到这一点,而且我遇到了一些非常基本的麻烦.

我的设置
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)

panel slide drawer slidingdrawer ios

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

iOS Animate Dashed Rectangle Border

我有一个显示图像的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)

animation border ios

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

EXC_BAD_ACCESS消息发送到解除分配的实例,但我正在使用ARC?

我有一个应用程序从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我的代码中没有任何手动发布声明!

请帮我解决这个问题!

memory exc-bad-access objective-c automatic-ref-counting

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

"返回......"声明是否会"休息"; 实际意义?

我从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声明吗?

return objective-c switch-statement

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

SQL Server Management Studio - 多个对象资源管理器Windows

我目前正在建立一个数据库.这些表都已完成,现在我正在添加我的存储过程.我也在使用tSQLt和Red Gate的SQL测试编写测试.由于这如何将信息添加到数据库(每个测试都是自己的存储过程,加上有大量的tSQLt存储过程),我得到了非常非常大量的存​​储过程.

我发现我在对象资源管理器窗口中上下滚动很多,因为我在表列表之间来回移动(根据数据结构为每个表编写几个测试)和存储过程列表(当我需要为失败的测试创建/更新存储过程.

我已经将我的对象资源管理器和我的SQL测试窗口分成了一个单独的显示器(55英寸电视FTW上的Apple TV Airplay!),但我发现一点调整可以帮助我.

通常,我在我的表列表的一个范围和我的存储过程列表的一个范围内工作,所以如果我有两个窗口,我可以设置一个到我的表列表的相关区域,一个到我的相关区域sproc列表,限制或消除我的滚动.

每次我尝试从"视图"菜单中选择"对象资源管理器"时,它只会突出显示当前打开的实例.有没有办法得到其中2个?是否有其他解决方法可以获得相同的效果?

ssms

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