我正在尝试更改导航栏的颜色,但我发现如果导航器是根导线,那是唯一不可能的.
我正在尝试这个:
self.navigationController?.navigationBar.translucent = true
self.navigationController!.navigationBar.barTintColor = UIColor.blueColor()
Run Code Online (Sandbox Code Playgroud)
我所有的Viewcontrollers都与导航控制器有关.然而,没有任何改变.事实上,我试图从故事板中制作相同的东西,但只有当我在第一个导航器中时才有效.
我试图阅读与此问题相关的所有内容,但一无所获
我可以像这样添加任何项目到导航栏
let HomeImage = UIImage(named: "home")!
let Home : UIBarButtonItem = UIBarButtonItem(image: HomeImage, style: .Plain, target: self, action: "home:")
navigationItem.rightBarButtonItem = Home
Run Code Online (Sandbox Code Playgroud) 自升级到XCode8 GM和ios10以来,通过Interface Builder创建的所有视图都没有正确初始化,直到比预期要晚得多.这意味着在viewDidLoad,cellForRowAtIndexPath,viewWillAppear等中,每个视图的帧大小都设置为{1000,1000}.在某些时候他们似乎是正确的,但它为时已晚.
遇到的第一个问题是全面的角落圆角失败:
view.layer.cornerRadius = view.frame.size.width/2
Run Code Online (Sandbox Code Playgroud)
对于依赖于帧大小在代码中进行计算的任何事情,都会出现进一步的问题.
cellForRowAtIndexPath
Run Code Online (Sandbox Code Playgroud)
对于cellForRowAtIndexPath,帧大小在初始表显示时失败,但滚动后它可以正常工作.willDisplayCell:forRowAtIndexPath也没有正确的帧大小.
我已经对一些值进行了硬编码,但显然这是非常糟糕的代码实践,在我的项目中也是如此.
有没有办法或地方获得正确的框架尺寸?
编辑
我发现使用高度/宽度约束而不是帧宽高度更可靠.这可能会增加需要大量新IBOutlet的开销,以链接项目的高度/宽度约束.
现在我已经创建了一个UIView类,它允许我在没有IBOutlets的情况下直接访问View的高度/宽度约束.对于最小的使用,小循环不应该是一个大问题.对于没有明显创建宽度/高度约束的IB项目,不能保证结果.可能最好为常数返回0,或者更糟.此外,如果您没有高度/宽度约束,并且您的视图基于前导/尾随约束动态调整大小,则这将不起作用.
-viewDidLoad似乎具有正确的帧大小,但如果您在此处进行修改,通常会导致UI的可视更改.
UIView的+ WidthHeightConstraints.h
@interface UIView (WidthHeightConstraints)
-(NSLayoutConstraint*)widthConstraint;
-(NSLayoutConstraint*)heightConstraint;
-(NSLayoutConstraint*)constraintForAttribute:(NSLayoutAttribute)attribute;
@end
Run Code Online (Sandbox Code Playgroud)
UIView的+ WidthHeightConstraints.m
#import "UIView+WidthHeightConstraints.h"
@implementation UIView (WidthHeightConstraints)
-(NSLayoutConstraint*)widthConstraint{
return [self constraintForAttribute:NSLayoutAttributeWidth];
}
-(NSLayoutConstraint*)heightConstraint {
return [self constraintForAttribute:NSLayoutAttributeHeight];
}
-(NSLayoutConstraint*)constraintForAttribute:(NSLayoutAttribute)attribute {
NSLayoutConstraint *targetConstraint = nil;
for (NSLayoutConstraint *constraint in self.constraints) {
if (constraint.firstAttribute == attribute) {
targetConstraint = constraint;
break;
}
}
return targetConstraint;
}
@end
Run Code Online (Sandbox Code Playgroud)
编辑2
事实证明,上述类别只是部分有效.主要是因为ios似乎自动添加一些额外的高度/宽度约束重复项,类型为NSContentSizeLayoutConstraint,实际上与普通约束的大小不同.NSContentSizeLayoutConstraint也是一个私有类,所以我不能做isKindOfClass来过滤掉那些.我还没有找到另一种有效测试的方法.这很烦人.
我正在寻找一些关于如何使用Swift2for 在圆形边缘周围绘制简单单线串的最新帮助/提示iOS9.我看到涉及旧ObjC片段的相当陈旧的例子,并且仅限于此OS X.这在自定义UIView子类的drawRect()方法中是否可以在iOS中实现?
iPad safari应该符合html5标准,但似乎所需的元素不起作用.任何人都知道为什么,或者有一个不需要大量JavaScript的体面解决方案?
我的代码
<input type=email class=input placeholder="Email" name="email" required>
Run Code Online (Sandbox Code Playgroud) 我需要使用JavaScript或甚至是基于Web的应用程序元标记(如果有的话)禁用IOS上的键盘选项卡箭头.
我尝试了一些选项但在选择菜单时遇到了问题.
我也无法将所有tabindex恢复为-1,因为这会损坏桌面和其他设备上的标签功能.
任何帮助,将不胜感激.
这是我为跳转到readonly的字段所做的一个例子.
$(document).ready(function() {
$('input, textarea, select').on('focus', function() {
$('input, textarea').not(this).attr('readonly', 'readonly');
$('select').not(this).attr("disabled", "disabled");
});
$('input, textarea, select').on('blur', function() {
$('input, textarea').removeAttr("readonly");
$('select').removeAttr("disabled");
});
});Run Code Online (Sandbox Code Playgroud)
我正在使用AVAssetExportSession创建视频并在完成后播放视频.但是Visual Part不会立即显示但只有音频会立即播放.视觉部分经过一段约20至30秒的延迟后出现.这是我播放视频的代码
-(void)playUrl:(NSURL *)vUrl{
[[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:[_avPlayer currentItem]];
_avAsset=nil;
_avPlayerItem=nil;
_avPlayer =nil;
[_avPlayerLayer removeFromSuperlayer];
_avPlayerLayer=nil;
_avAsset=[AVAsset assetWithURL:vUrl];
_avPlayerItem =[[AVPlayerItem alloc]initWithAsset:_avAsset];
_avPlayer = [[AVPlayer alloc]init]; //WithPlayerItem:_avPlayerItem];
[_avPlayer replaceCurrentItemWithPlayerItem:_avPlayerItem];
_avPlayerLayer =[AVPlayerLayer playerLayerWithPlayer:_avPlayer];
[_avPlayerLayer setFrame:CGRectMake(0, 0, viewAVPlayer.frame.size.width, viewAVPlayer.frame.size.height)];
[viewAVPlayer.layer addSublayer:_avPlayerLayer];
[_avPlayer seekToTime:kCMTimeZero];
[_avPlayer play];
_avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(repeatPlayer:) name:AVPlayerItemDidPlayToEndTimeNotification object:[_avPlayer currentItem]];
}
Run Code Online (Sandbox Code Playgroud)
如果有人知道答案,请告诉我.此代码在iOS 9中完美运行,但不是iOS 10.在此先感谢.
我正在尝试为待办事项列表类型的应用制作详细屏幕。这是详细信息屏幕当前的外观:
这是UICollectionViewController带有标题的。标头包含2个UILabel对象和1个UITextView对象。这些对象的布局由垂直管理UIStackView。A UIView用于设置白色背景。
我在定义UICollectionReusableView运行时的高度时遇到一些困难。任何建议表示赞赏。
我有一个symfony项目,在这里我使用api平台。我有一个实体,也有它的数据提供者。我在定义集合终结点的其他参数时遇到麻烦。
实体称为建议。它必须从弹性搜索返回文档集合。
端点是:
/suggestion
Run Code Online (Sandbox Code Playgroud)
该端点侦听其他GET参数:
页面,级别
每次在请求端点时都会读取这两个参数。
在我的SuggestionsCollectionDataProvider.php课堂上,我有:
/**
* Retrieves a collection.
*
* @param string $resourceClass
* @param string|null $operationName
* @return \Generator
*/
public function getCollection(string $resourceClass, string $operationName = null): \Generator
{
$query = $this->requestStack->getCurrentRequest()->query;
// I am reading these two parameters from RequestStack
// this one is built-in
$page = max($query->get('page', 1), 1);
// this is a custom one
$level = $query->get('level', 0);
...
Run Code Online (Sandbox Code Playgroud)
在我的SuggestionRepository.php课上:
/**
* @return \Generator
*/
public …Run Code Online (Sandbox Code Playgroud) 这是我的代码:
let cross = UIBezierPath()
cross.move(to: CGPoint(x: skull.bounds.maxX, y: skull.bounds.minY))
cross.addLine(to: CGPoint(x: skull.bounds.minX, y: skull.bounds.maxY))
cross.close()
UIColor.red.set()
cross.lineWidth = 3.0
cross.lineCapStyle = .round
cross.stroke()
Run Code Online (Sandbox Code Playgroud)
我想围绕线的末端,但它仍然是正方形,我应该怎么做?
CGLayer、CALayer 和 CGContext 有什么区别?
我正在尝试在 nette 2.1.2 中创建表单向导。我创建了自己的组件,可以在其中注入 nette 表单。然后在拿铁模板中将表单呈现为各个步骤。
但是,我想在当前步骤中对表单字段进行验证,然后再从这一步切换到另一个步骤。为此,我需要两件事:
你能帮我怎么做吗?
我在swift 2中有以下代码
let deviceid = UIDevice.currentDevice().identifierForVendor!.UUIDString
Run Code Online (Sandbox Code Playgroud)
这无法编译.我尝试了xCode中自动修复的建议,我想出了这个.
let deviceid = UIDevice.currentDevice.identifierForVendor!.UUIDString
Run Code Online (Sandbox Code Playgroud)
但它仍然无法编译.它说'UUID'类型的值没有成员UUIDString'
ios ×7
swift ×6
ios10 ×3
objective-c ×2
swift2 ×2
swift3 ×2
annotations ×1
autolayout ×1
avplayer ×1
calayer ×1
cgcontext ×1
cglayer ×1
deviceid ×1
drawrect ×1
forms ×1
frame ×1
html5 ×1
javascript ×1
jquery ×1
latte ×1
nette ×1
php ×1
required ×1
swagger ×1
symfony ×1
uibezierpath ×1
uinavigation ×1
wizard ×1
xcode8 ×1
yaml ×1