如果使用视图中的代码添加视图的边框
self.layer.borderColor = [UIColor yellowColor].CGColor;
self.layer.borderWidth = 2.0f;
Run Code Online (Sandbox Code Playgroud)
边框添加到视图内部,如下所示:

右视图是原始视图,如您所见,边界视图的黑色区域小于原始视图.但我想得到的是原始视图之外的边框,如下所示:
.黑色区域等于原始区域,我该如何实现呢?
我需要在viewDidLoad上始终显示滚动条,以便用户可以理解有滚动的内容.我做了以下事情:
[myscrollView flashScrollIndicators];
Run Code Online (Sandbox Code Playgroud)
但是滚动条只会在viewDidLoad之后显示一段时间并再次消失,只是在用户触摸屏幕时重新出现.
我需要让滚动条始终可见.我该怎么做?
为什么在iOS 4.3.5上,"大"(960 x 1380)自定义UIView执行CABackingStoreUpdate效率低下,如何提高绘图操作的性能?
不完全确定我的意思?继续阅读......
随着我对这个问题的理解的发展,这个问题也是如此.因此,问题本身是相似的,但自从首次提出问题以来,以下文本正文中的代码示例和基本细节/推理已经发生了重大变化.
我有一个令人难以置信的基本应用程序(底部的代码),它在自定义UIView的drawRect:方法中绘制单个elipses.当绘制的elipses的大小保持不变但自定义UIView的大小变大时,应用程序演示了性能上的差异:


我在运行iOS 4.3.5的iPod 4th Gen和运行iOS 5.1.1的iPad 1st Gen上运行应用程序,使用不同大小的自定义UIViews一系列.
下表显示了时间分析器仪器的结果:

以下仪器跟踪显示每个设备的两个极端的详细信息:
iOS 5.1.1 - (自定义UIView大小320 x 460)

iOS 5.1.1 - (自定义UIView大小960 x 1380)

iOS 4.3.5 - (自定义UIView大小320 x 460)

iOS 4.3.5 - (自定义UIView大小960 x 1380)

正如你所能(希望)在4个案例中的3个案例中我们得到了我们所期望的:大部分时间用于执行自定义UIViews drawRect:方法并且每个都持有10fps.
但是第四种情况显示了性能的下降,应用程序在仅绘制单个形状时难以保持7fps.在UIView的CALayer显示方法中,大部分时间用于复制内存,具体如下:
[CALayer display]>
[CALayer
_display ]> CABackingStoreUpdate>
CA :: Render :: ShmemBitmap :: copy_pixels(CA :: Render :: ShmemBitmap const*,CGSRegionObject*)>
memcpy $ VARIANT $ CortexA8
现在从这些数字中看出这里出现严重错误并不是天才.使用大小为960 x 1380的自定义UIView,iOS 4.3.5花费的时间超过复制内存的4倍,而不是绘制整个视图的内容.
现在,根据上下文,我再次提出我的问题:
为什么在iOS 4.3.5上,"大"(960 x 1380)自定义UIView执行CABackingStoreUpdate效率低下,如何提高绘图操作的性能? …
我正在使用此代码将图层应用于UIview:
mask = [[CAShapeLayer alloc] init];
mask.frame = baseView.layer.bounds;
CGRect biggerRect = CGRectMake(mask.frame.origin.x, mask.frame.origin.y, mask.frame.size.width, mask.frame.size.height);
CGRect smallerRect = CGRectMake(0.0f, 0.0f, 0.0f, 0.0f);
UIBezierPath *maskPath = [UIBezierPath bezierPath];
[maskPath moveToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMinY(biggerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMaxY(biggerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(biggerRect), CGRectGetMaxY(biggerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(biggerRect), CGRectGetMinY(biggerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMinX(biggerRect), CGRectGetMinY(biggerRect))];
[maskPath moveToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMinY(smallerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMaxY(smallerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(smallerRect), CGRectGetMaxY(smallerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMaxX(smallerRect), CGRectGetMinY(smallerRect))];
[maskPath addLineToPoint:CGPointMake(CGRectGetMinX(smallerRect), CGRectGetMinY(smallerRect))];
mask.path = maskPath.CGPath;
[mask setFillRule:kCAFillRuleEvenOdd];
mask.fillColor = [[UIColor blackColor] CGColor];
baseView.layer.mask = mask;
Run Code Online (Sandbox Code Playgroud)
由于我要剪切的矩形发生了变化,我很想知道是否有一种快速方法可以更改蒙版的大小,而不是仅仅从UIview中删除它并使用不同的尺寸重新应用它:
例如
[mask removeFromSuperlayer];
Run Code Online (Sandbox Code Playgroud)
和...
mask = [[CAShapeLayer alloc] …Run Code Online (Sandbox Code Playgroud) 使用Google CAF Receiver SDK,当我们不使用接收器播放器时,我们如何防止接收器超时并自动终止强制转换会话?
标准的Google Cast用例是将媒体从设备发送到投射接收器,让接收器使用播放器渲染媒体.该CAF接收器SDK在一个美丽的,简单的方法提供了这个功能使用元素 cast-media-player.
但是对于那些我们想要从设备进行投射并渲染与使用不相关的内容cast-media-player(例如HTML仪表板)的情况,我们如何让接收器保持活力?
例如,以下自定义接收器(简称为HAML)导致演员会话在5分钟后自动终止...
!!! 5
%html
%head
:css
cast-media-player {
display: none;
}
= javascript_include_tag 'https://www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js'
%body
%cast-media-player
:javascript
const context = cast.framework.CastReceiverContext.getInstance();
const player = context.getPlayerManager();
player.setMessageInterceptor(cast.framework.messages.MessageType.LOAD, loadRequestData => {
...[load custom view]...
return false;
});
context.start();
Run Code Online (Sandbox Code Playgroud)
接收器日志显示该行cast.framework.common.IdleTimeoutManager] timer expired然后关闭.此处显示示例接收器日志.
我试过了:
很感谢任何形式的帮助!
ios ×4
iphone ×3
uiview ×3
cocoa-touch ×2
border ×1
cashapelayer ×1
chromecast ×1
google-cast ×1
ios4 ×1
objective-c ×1
uikit ×1
uiscrollview ×1