小编mic*_*ckm的帖子

CGContext线宽

我试图绘制一条简单的线,问题是它的宽度不是1像素,而是2.如果我正确读取,文档说明用户空间单位将转换为像素.

代码很简单,但我的行总是2像素宽.

//Get the CGContext from this view
CGContextRef context = UIGraphicsGetCurrentContext();
//Set the stroke (pen) color
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);

//Set the width of the pen mark
CGContextSetLineWidth(context, 1);

for (int i = 1; i <= sections - 1; i++)
{
    UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:CGPointMake(0.0, i * kSectionHeight)];

    CGContextMoveToPoint(context, 0.0, i * kSectionHeight); //Start point
    CGContextAddLineToPoint(context, self.frame.size.width, i * kSectionHeight);
}

CGContextStrokePath(context);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

ios quartz-core

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

UITableView内容高度

我有一个UITableView设置为不启用滚动,它存在于UIScrollView中.我这样做是因为设计规范要求看起来像桌面视图的东西(实际上它们中有两个并排),并且实现tableviews而不是添加一大堆按钮要容易得多,(分组表视图).

问题是,我需要知道滚动视图的容器视图有多大,所以它滚动表视图的整个高度.一旦加载,有没有办法找到tableview的高度?没有像滚动视图那样的contentView属性,框架似乎是静态的等等......

有什么想法吗?

height uitableview

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

UIGestureRecognizer和UITextView

我正在实现一个UITextView,其中我只想响应文本视图的指定部分中的触摸.

我有一个手势识别器附加到视图,并且工作正常,直到我将视图设置为第一响应者,如果视图中的点击点大于X和Y值,我会这样做.

- (IBAction)textViewTapped:(UIGestureRecognizer *)sender {
CGPoint point = [sender locationOfTouch:0 inView:self.view];

NSLog(@"x ix %f, y is %f", point.x, point.y);

if (point.x > 96 && point.y > 106)
    [self.myTextView becomeFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

问题是,一旦它被设置为第一响应者,然后通过点击该文本视图外部来重新签名,我的手势识别器方法永远不会被再次调用.如果我点击没有设置第一响应者的区域,那么我点击时会多次调用我的方法.如果我设置然后辞职第一响应者,它在第一次辞职后没有响应.

- (IBAction)viewTapped:(UIGestureRecognizer *)sender {
    [self.view endEditing:YES];

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(textViewTapped:)];
    [self.myTextView addGestureRecognizer:tap];
    NSArray *gestures = [self.myTextView gestureRecognizers];
    NSLog(@"got %d recognizers", [gestures count]);  
}

在尝试的时候,如果我在每次辞职后添加一个新的手势识别器,那么这是有效的,但显然不是一个好的解决方案.

有什么想法吗?

uitextview uigesturerecognizer ios

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

ABAddressBookRequestAccessWithCompletion iOS 7和信号量

此代码之前已经发布,并且已被用于我可以收集的内容.我处于这样一种情况,我需要代码不要继续,直到我知道我是否有权访问联系人.

在Xcode 5.0.2和iOS 6上,这很好用.在iOS 7上,它永远挂起,然后当我杀死应用程序时,会出现一个对话框,要求允许访问联系人.

ABAddressBookRef addressBook = ABAddressBookCreate();

__block BOOL accessGranted = NO;

if (ABAddressBookRequestAccessWithCompletion != NULL) { // we're on iOS 6
dispatch_semaphore_t sema = dispatch_semaphore_create(0);

ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
    accessGranted = granted;
    dispatch_semaphore_signal(sema);
});

    dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER); 
}
else { // we're on iOS 5 or older
     accessGranted = YES;
}
Run Code Online (Sandbox Code Playgroud)

在尝试使用它时,我只需将BOOL设置为NO,然后在块中将其设置为YES.在块之后,我放了一个while循环,检查变量是YES,然后睡了1秒钟.在6上工作得非常好,在7中我永远不会到达块中的NSLog语句,并且我永远停留在while循环中打印日志语句.

我在这里做的事真的很蹩脚吗?或者这种方法在7上乱了吗?

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
    if (granted)
    {
        self.myAddressBook = addressBook;
    }

    done = YES;
    NSLog(@"in block, …
Run Code Online (Sandbox Code Playgroud)

semaphore objective-c contacts ios

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

iOS自定义按钮标题模糊

如果我在IB中创建一个按钮,并且只将类型设置为自定义,标题和字体大小,它会很好而且清晰.如果我以编程方式创建它,那么字体就会模糊不清.创建按钮的代码是:

CGRect frame = self.sendButton.frame;

    NSString *title = @"Read Disclosure";
    UIFont *font = [UIFont boldSystemFontOfSize:17.0];
    CGSize titleSize = [title sizeWithFont:font constrainedToSize:frame.size];

    CGFloat xValue = (self.view.frame.size.width - titleSize.width) / 2;
    CGFloat yValue = frame.origin.y - (titleSize.height / 2);

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

    [button setFrame:CGRectMake(xValue, yValue, titleSize.width, titleSize.height * 2)];
    [button setTitle:@"Read Disclosure" forState:UIControlStateNormal];
    [button.titleLabel setFont:font];
    [button setTitleColor:[UIColor colorWithRed:50.0/255.0 green:79.0/255.0 blue:133.0/255.0 alpha:1.0] forState:UIControlStateNormal];
    [button setTitleShadowColor:nil forState:UIControlStateNormal];
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
    [button addTarget:self action:@selector(disclosureButtonAction) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:button];
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我能想到的每一个环境,似乎没有什么能有所作为.知道我在这里缺少什么吗?

谢谢.

blurry button title ios

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

iOS按钮嵌套在未接触触摸的视图中

我有一个包含滚动视图的视图控制器,它占用了整个可用窗口.有一个UIView,我用它作为容器视图,它是scrollview的子视图,包含所有其他视图和控件.视图控制器初始化时有很多配置,根据来自Web服务的数据,将显示哪些视图和控件.

附加到视图控制器的主视图的是轻击手势识别器.我发现我需要检查[触摸视图]以查看它是一个按钮还是我不希望手势识别器解释的任何其他控件,并从中传递一个NO值

  • (BOOL)gestureRecognizer :( UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch

委托方法,如果它是这些控件之一.

所以在这个容器视图中是另一个(UIView)子视图,在该子视图中是一个按钮.视图控制器是导航控制器堆栈的一部分,当它仅作为导航控制器呈现时,一切运行良好.

当导航控制器从标签栏的一个标签显示时,当我点击按钮时,它无法识别该按钮上的点击.当我打破上面的委托方法时,[触摸视图]是一个UIView,而不是UIButton.

如果我按住按钮一秒左右,则它会识别按钮,并将消息转发给按钮.

有什么想法吗?我可以发布代码,只是不知道发布什么...

view button gesture ios

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