当我点击我的时候,UIButton我希望它有一个涟漪效应,基本上是从它发出的几个圆圈,同时增长和降低它们的不透明度.
我最初的反应是有几个UIImageView圆圈和CGAffineTransformMakeScale一个稍大的尺寸,同时降低它们alpha.但我觉得这不是最好的选择,因为它似乎只是因为它似乎很愚蠢而创建图像,它可能会产生一些不必要的无意中听到.
完成此任务的最佳方法是什么?如果您不使用私有API,则奖励积分.
要在屏幕上创建黑色叠加层,我将所有其他视图的视图添加到UIWindow:
UIView *darkOverlayView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
darkOverlayView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.85];
Run Code Online (Sandbox Code Playgroud)
然后我想将UIImageView置于新的中心darkOverlayView,并尝试如下:
UIImageView *imageFromLink = [[UIImageView alloc] initWithImage:responseObject];
imageFromLink.translatesAutoresizingMaskIntoConstraints = NO;
CGFloat widerThanHeightBy = imageFromLink.bounds.size.width / imageFromLink.bounds.size.height;
[darkOverlayView addConstraint:[NSLayoutConstraint constraintWithItem:imageFromLink attribute:NSLayoutAttributeWidth relatedBy:0 toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:[UIScreen mainScreen].bounds.size.width]];
[darkOverlayView addConstraint:[NSLayoutConstraint constraintWithItem:imageFromLink attribute:NSLayoutAttributeHeight relatedBy:0 toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:[UIScreen mainScreen].bounds.size.height / widerThanHeightBy]];
Run Code Online (Sandbox Code Playgroud)
但每次运行时,我都会收到错误:
视图层次结构不是为约束准备的:当添加到视图时,约束的项必须是该视图(或视图本身)的后代.如果在组装视图层次结构之前需要解析约束,则会崩溃.打破 - [UIView _viewHierarchyUnpreparedForConstraint:]进行调试.2013-12-07 00:59:03.626 Jupiter [58008:70b]查看层次结构未准备好约束.约束:容器层次结构:>在容器层次结构中找不到视图:> - (null)该视图的超级视图:无SUPERVIEW
我怎么能绕过这个?或者我必须使用框架?
我明白dispatch_async()在后台线程上运行一些东西,然后dispatch_main()在主线程上运行它,那么它dispatch_sync()会在哪里进来?
我已经#define在我的.m文件中使用了一段时间了,我最近发现它不是优选的,你应该使用它const.但是,有很多关于使用那些变化很大的信息的信息,我想确保我正确使用它们.
对于我#define的,我只是在我的.m中使用它们,因为我没有看到任何理由让它们公开.但在大多数情况下,似乎在.h中使用extern或FOUNDATION_EXPORT之前声明了.
在标题中这样做是好的做法吗?或者在实施中这样做是否可以?
还有static必要吗?
不const来的类型之前,像NSString * const或const NSString *?
是否有一个公认的标准,如何命名他们?似乎有很多相互矛盾的信念,因为有些人坚持使用前置k,有些人使用三个字母常量,有些人根本不使用,有些人使用骆驼案例,以大写字母开头.
我理解帧和边界之间的区别我认为,边界是视图的局部坐标系,而帧是超视图.
但是,使用scrollviews,我有点困惑.
当我在UIScrollView中有一个UIImageView并且用它来缩放它时,似乎框架变大(宽度和高度)也会增加相应UIImage的宽度和高度.
但是,看起来UIImageView的界限根本没有变化.
为什么是这样?滚动视图如何适用于所有这些?我已经阅读了多个问题并检查了文档,但这个解释让我望而却步.
如何放大UIScrollView会影响其内容?它只是改变缩放视图的框架,但不知何故不是边界?
UIKit中的视图几何体指定它作用于从左上角(0,0)开始的轴,并在向右下方移动时以x和y递增.
UIOffsetMake()在UIKit Dynamics中使用了很多,我想知道它是否遵循类似的模型.它用于相对于UIView的中心指定您希望视图被推送到的点所在的位置.
如果我指定UIOriginMake(5.0, -5.0)它是否从中心更改为右下角?因为它垂直向下5,水平向下5?或者它是否遵循传统的UIView模型,这表明它在水平方向上5个点,在垂直方向上上升5个点?
我没有理由认为它不遵循UIView的模型,但我并不积极,我想确定.
说我有以下代码:
var array = [1, 5, 6, 2, 7, 4]
for item in array {
println(index)
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在循环体内访问循环所在的迭代?(即:0,1,2,3 ...)
我有一个自定义UIButton子类,当我设置hidden背景层的性质是动画阿尔法从0到1,我想从0瞬跳1.为什么动画以及如何阻止它这样做呢?
这是我的代码:
private var subLayer: CALayer!
override func awakeFromNib() {
super.awakeFromNib()
addTarget(self, action: "touchedDown", forControlEvents: .TouchDown)
addTarget(self, action: "canceledTouch", forControlEvents: .TouchUpInside | .TouchUpOutside | .TouchDragExit | .TouchCancel)
}
override func updateConstraints() {
super.updateConstraints()
// Add a background layer that is tight to the text in the button to indicate the button being pressed
subLayer = CALayer()
subLayer.frame = CGRectInset(bounds, -4.0, 5.0)
subLayer.backgroundColor = UIColor(red: 204/255.0, green: 232/255.0, blue: 253/255.0, alpha: 1.0).CGColor
subLayer.cornerRadius = 2.0
subLayer.hidden = …Run Code Online (Sandbox Code Playgroud) 我有一个简单的UIButton子类,在默认的UIButtons中添加一个下拉三角形.我UIView在我的Storyboard中的视图控制器的标题视图中删除了一个,然后在Storyboard中将按钮子类添加到该视图中.我在故事板中使用自动布局的唯一方法是垂直和水平居中.
这是代码:
class DropDownButton: UIButton {
override func awakeFromNib() {
super.awakeFromNib()
setImage(UIImage(named: "drop-down-triangle"), forState: .Normal)
sizeToFit()
titleEdgeInsets = UIEdgeInsets(top: 0, left: -imageRectForContentRect(bounds).width - 17.0, bottom: 0, right: 0)
imageEdgeInsets = UIEdgeInsets(top: 0, left: titleRectForContentRect(bounds).width, bottom: -2, right: 0)
}
}
Run Code Online (Sandbox Code Playgroud)
这是它的样子:

在代码中,我有时会更改标题:
dropDownButton.setTitle(title, forState: .Normal)
Run Code Online (Sandbox Code Playgroud)
这导致它看起来像这样:

是什么造成的?如何阻止它伸展?
我在测试设备上安装了 iOS 9.3 测试版,因为我正在运行一些 9.3 编译的应用程序,但我还有一个在 Xcode 7.2 中编译的旧应用程序。我可以轻松地在任何 iOS 9.2 设备上运行该应用程序,但如果我尝试在一台 iOS 9.3 测试版设备上运行它,我会收到“找不到开发人员磁盘映像”错误。
Xcode 7.3 包含对 Swift 的一些更新,因此我必须更改大量文件,我只是想测试一下它是否工作正常。有什么方法可以做到这一点而不必更改大量 Swift 代码?它在App Store上为9.2编译,我可以在我的9.3设备上运行它,所以我不明白为什么这么难。
ios ×8
objective-c ×5
uiview ×5
swift ×3
cocoa-touch ×2
ios7 ×2
uibutton ×2
uiimageview ×2
arrays ×1
autolayout ×1
concurrency ×1
const ×1
indexer ×1
ios9 ×1
iphone ×1
loops ×1
uiscrollview ×1
xcode ×1