小编bla*_*bus的帖子

计算两种颜色之间渐变上给定点的颜色?

所以这基本上就是我想写的方法(在Objective-C/Cocoa中,使用UIColors,但我真的只对底层数学感兴趣):

+ (UIColor *)colorBetweenColor:(UIColor *)startColor andColor:(UIColor *)endColor atLocation:(CGFloat)location;
Run Code Online (Sandbox Code Playgroud)

举个例子,假设我有两种颜色,纯红色和纯蓝色.给定两者之间的线性渐变,我想计算在该渐变上的33%标记处的颜色: 例
所以,如果我这样调用我的方法:

UIColor *resultingColor = [UIColor colorBetweenColor:[UIColor redColor] andColor:[UIColor blueColor] atLocation:0.33f];
Run Code Online (Sandbox Code Playgroud)

我会得到'B'的结果颜色,同样地,0.0f当位置返回颜色'A'时,1.0f将返回颜色'C'.

所以基本上我的问题是,我如何混合两种颜色的RGB值并确定它们之间某个"位置"的颜色?

gradient colors uicolor ios

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

webview与本机iOS应用程序进行通信的任何方式?

我有一个包含webview的iPad应用程序.webview的页面上有一个按钮,当点击它时,需要以某种方式告诉本机应用程序关闭webview.有没有办法做到这一点?即webview中的javascript将消息传递给本机应用程序的方式,反之亦然?

谢谢!

javascript cocoa-touch objective-c uiwebview ios

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

MKOverlayRenderer比MKOverlayView差吗?

我正在开发一个基于地图的应用程序,我正在使用MBXMapKit框架(构建在MapKit上),以便在我的MapView中显示自定义Mapbox地图图块而不是默认的Apple图.然而,虽然Apple的地图是矢量,但Mapbox仍然是光栅图像切片,因此它们被MBXMapKit框架显示为叠加.

这一切都很好,直到我用地图在地图上绘制折线MKOverlay.根据我的理解,在iOS 7之前,你会提供一个MKOverlayViewMapView委托,它将被渲染到地图上,但是现在在iOS 7中,已经被弃用了MKOverlayRenderer,如果我理解正确,它的功能更像是一个drawRect各种各样,我直接绘制到一个上下文,结果显示在地图上(我意识到这不是它的工作原理,但重点是我不再能够访问一个普通的旧版本UIView,这就是我的问题出现的地方).

第一个问题是,当我的叠加层被绘制到地图时,它会逐层绘制.这很好,除了叠加图块似乎与底层的Mapbox图像图块合成.这样可以看到一个简单的折线,有3或4个点需要一个坚实的半秒来渲染(在A7 iPad Air上),你可以看到它在'chunks'中出现,因为每个瓷砖都被重新绘制.它也出于某种原因导致所有未受影响的Mapbox磁贴重新加载(它们都闪烁一瞬间).从UX的角度来看,这看起来像个笑话,完全不可接受.

第二个问题是,因为我不再能够访问UIViewiOS 6中的内容,我不知道如何为叠加设置动画 - 我想要的是淡化折线而不是立即显示它(虽然在这一点上,我会立即显示整个事物,然后看着它逐渐渲染,就像是从点阵式打印机中吐出一样,但你得到了我的观点).

所以我的主要问题是,我是否遗漏了某些东西,或者MKOverlayRendererFAR是否比FAR更不灵活和有用MKOverlayView?从逻辑上讲,您可以将地图上的图层视为可以操纵的单个对象,将事件绑定到它等等,而不是将某些光栅像素数据刻录到地图中,并且永远不能再修改或者与之交互(没有重新绘制整个内容),这样的线程似乎表明Apple已经基本上删除了使用您以前能够轻松完成的叠加来执行大量操作的功能.

由于MKOverlayView现在已弃用,因此不再调用相应的委托方法,这些问题是否有解决方案?由于性能问题和缺乏动画能力,我现在无法将其用于生产应用程序.

编辑:我在绘制时注意到的另一个性能问题MKOverlay是它会影响在绘图发生时发生的其他动画 - 当我点击地图注释时,工具提示会在折线渲染开始的同时弹出动画,确保足够,渲染会导致工具提示动画丢帧.

uikit mapkit ios

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

iOS 7 Multipeer Connectivity- MCNearbyServiceBrowser finds itself?

I have an app that's using the iOS 7 Multipeer Connectivity framework to advertise itself as well as browse for other devices. Why does my MCNearbyServiceBrowser instance find itself (the device the app is running on) and call the browser:foundPeer... delegate method? If I log the actual PeerID that I create to start advertising my device, as well as the discovered PeerID in the delegate method, they have different unique IDs but the same display name. Any ideas why?

cocoa objective-c ios multipeer-connectivity

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

无法为自定义UITableViewCell连接IBOutlets

我在Xcode 4中为我的iPhone应用程序创建自定义tableview单元时遇到了问题.我创建了.h和.m文件,为单元格内应存在的所有子视图创建了IBOutlets,并进行了拖动Interface Builder中对单元格的XIB文件的实际控制.但是,我无法弄清楚如何将插座连接到IB控件.我读过的每个教程都说控制 - 从对象列表中的TableViewCell对象拖动到子视图,但是当我这样做时,我的IBOutlets没有列在弹出窗口中.唯一可用的插座是'acccessoryView','backgroundView','editingAccessoryView'和'backgroundSelectedView'.我不也应该在该列表中看到自己的IBOutlets吗?或者我没有遵循正确的程序?(我对iPhone开发很新).

这是我用于自定义单元类的代码:

.H :

//
//  RecommendationCell.h
//  Tuneplug
//
//  Created by Bill Labus on 6/21/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>


@interface RecommendationCell : UITableViewCell {
    UIImageView *artwork;
}

@property (nonatomic, retain) UIImageView *artwork;

@end
Run Code Online (Sandbox Code Playgroud)

.m:

//
//  RecommendationCell.m
//  Tuneplug
//
//  Created by Bill Labus on 6/21/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "RecommendationCell.h"

@implementation RecommendationCell

@synthesize artwork;


- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = …
Run Code Online (Sandbox Code Playgroud)

iphone xcode uitableview iboutlet

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

CLLocationManager不调用任何委托方法

首先,免责声明是我的目标是iOS 5,所以很可能是我的问题的根源,但如果不是......

我正在尝试编写一个通过CoreLocation管理位置更新的简单类.但是,我看到一些非常奇怪的行为.我有一个自定义类,基本上包装CLLocationManager和委托方法.这是界面:

#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>

@protocol CLZipCodeFetcherDelegate
@optional - (void)didReceiveZipCode:(NSString *)zipCode;
@end

@interface CLZipCodeFetcher : NSObject <CLLocationManagerDelegate> {
    id <CLZipCodeFetcherDelegate> delegate;
    CLLocationManager *locationManager;
}

@property (strong, readwrite) id <CLZipCodeFetcherDelegate> delegate;
@property (strong, read write) CLLocationManager *locationManager;

- (void)getZipCode;

@end
Run Code Online (Sandbox Code Playgroud)

和实现(忽略与邮政编码相关的东西 - 这是该类最终要做的事情,但是现在我只是想从CoreLocation获取一些坐标):

#import "CLZipCodeFetcher.h"

@implementation CLZipCodeFetcher

@synthesize delegate, locationManager;

- (id) init {
    self = [super init];
    if (self != nil) {
        self.locationManager = [[CLLocationManager alloc] init];
        self.locationManager.delegate = self;
        self.locationManager.distanceFilter = 10.0f; // we don't need to …
Run Code Online (Sandbox Code Playgroud)

iphone core-location cllocationmanager

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

如何在JSON映射中指定键的值(在JavaScript中)?

我可能在这里使用了错误的术语,但这正是我想要做的.我想创建一个地图,其中包含每个键的值和每个键的对象的值.所以使用这段代码:

var myMap = {};
var keyVal = "abc";
var objVal = "123";
myMap.keyVal = objVal;
Run Code Online (Sandbox Code Playgroud)

现在我想要返回的是一个看起来像的JSON对象,{"abc":"123"}而是返回它{"keyVal":"123"}.如何让它使用键的实际变量内容而不是变量名?(或者我真的认为它根本不使用变量,只是将'keyVal'视为键名)

javascript json key map

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