我正在使用导航控制器,我设置为真正的导航栏的prefersLargeTitle属性.一切都很好,但是当我的标题文字变得太大时,它就不适合空间.在这里看起来如何:
有可能以某种方式使标题(当导航栏的prefersLargeTitle属性设置为true)动态调整其字体大小,如果是这样,如何实现?
我UIScrollView在中有一个UIViewController,由segue模态显示,另外一个UIPanGestureRecognizer确实通过pan关闭了视图控制器。此手势仅在以下情况下有效
scrollView.contentOffset.y == 0
Run Code Online (Sandbox Code Playgroud)
问题是,现在两个平移手势相互冲突,我无法再滚动视图。
为了解决这个问题,我尝试使用gestureRecognizer(_: shouldRecognizeSimultaneouslyWith:)方法,返回yes,并且还尝试将自定义的平移手势添加到UIScrollView平移手势识别器中,如下所示:
scrollView.panGestureRecognizer.addTarget(self, action: #selector(handlePanGesture(_:)))
Run Code Online (Sandbox Code Playgroud)
但是这些并不能解决问题。如果您知道如何解决此问题,请多多帮助。
已编辑
这是我的平移手势的代码,可消除视图控制器:
@IBAction func handlePanGesture(_ sender: UIPanGestureRecognizer) {
let percentThreshold: CGFloat = 0.3
if scrollView.contentOffset.y == 0 {
let translation = sender.translation(in: view)
let verticalMovement = translation.y / view.bounds.height
let downwardMovement = fmaxf(Float(verticalMovement), 0.0)
let downwardMovementPercent = fminf(downwardMovement, 1.0)
let progress = CGFloat(downwardMovementPercent)
guard let interactor = interactor else {return}
switch sender.state {
case .began:
interactor.hasStarted = true
dismiss(animated: …Run Code Online (Sandbox Code Playgroud) 我正在尝试注册自定义注释视图(我将它们创建为 MKAnnotationView 的子类),但是我遇到了一些麻烦。最初,我尝试使用以下代码为单个注释标记仅注册一个自定义注释视图(RestaurantMarkerView 是我的自定义注释视图):
mapView.register(RestaurantMarkerView.self, forAnnotationViewWithReuseIdentifier: MKMapViewDefaultAnnotationViewReuseIdentifier)
Run Code Online (Sandbox Code Playgroud)
它工作正常(当我点击图钉时,它会显示标注)。现在我添加另一个注释标记并尝试为其注册另一个视图,据我所知,在这种情况下,我应该为视图使用自定义标识符,因此我通过以下代码执行此操作:
mapView.register(RestaurantMarkerView.self, forAnnotationViewWithReuseIdentifier: "a")
mapView.register(ChoosenRestaurantMarkerView.self, forAnnotationViewWithReuseIdentifier: "b")
Run Code Online (Sandbox Code Playgroud)
现在,当我点击标记时,它们不会显示标注。当我将其中一个标记的重用标识符更改为 时MKMapViewDefaultAnnotationViewReuseIdentifier,该标记会显示标注。那么,如何注册多个自定义注释视图?谢谢。
我正在开发一个项目,突然 Xcode(版本 9.1 (9B55))停止在快速帮助中显示类、方法等的描述。当我单击类和方法时,我可以看到相同的行为。例如,当我点击一个viewDidLoad()方法时,它看起来是这样的:
但是,当我打开另一个项目时,它工作正常。这是另一个项目的屏幕截图,当我点击一个viewDidLoad()方法时:
所以,我认为,这不是与 Xcode 本身相关的问题(或者我错了),但也许我不小心破坏了项目中的某些内容。无论如何,我无法弄清楚是什么导致了这个问题。你有什么想法?
我有两个视图控制器。在第一个我有一个按钮,它以模态方式显示第二个。然后,我通过点击它上的一个按钮来关闭第二个(它会下降)。为了消除过渡,我创建了一个符合 的自定义类UIViewControllerAnimatedTransitioning,因此我为视图控制器使用了自定义过渡动画(在消除过渡期间我需要一个自定义行为)。
我的问题如下:由于我使用了自定义转换,转换完成后我的视图控制器是否仍然被删除,或者它仍然存在但不在屏幕上?如果是的话,会不会影响内存,有多坏?
当我们将一个对象的实例作为参数传递给一个方法时,该方法定义在该对象内部,如下面的代码所示,它是否会创建一个保留循环?
self.someMethod(self)
Run Code Online (Sandbox Code Playgroud) 我知道有很多这样的问题,但他们的解决方案对我不起作用。
注:该图像是从互联网下载的。它不是从iPhone的相机中拍摄的。
我有一个UIImage。为了进行一些图像处理操作,我使用Metal并以MTKView. 因此,我将图像转换为CIImage. 对图像进行所有修改后,我将其转换回CGImage并UIImage保存。
因此,保存的图像方向错误。
我不确定它在哪一步失去了方向(当从 转换UIImage为CIImage添加到 时MTKView,或者从 转换CIImage为CGImage然后转换UIImage为保存它时)。因为我不确定,所以下面我提供了我为每个步骤尝试过的所有内容:
用于从 转换UIImage为CIImage:
最初我只是简单地以这种方式转换图像:
let let ciImage = CIImage(image: image)
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用以下方式:
let ciImage = CIImage(image: image)?.oriented(forExifOrientation: imageOrientationToTiffOrientation(value: image.imageOrientation))
Run Code Online (Sandbox Code Playgroud)
这是该方法imageOrientationToTiffOrientation的实现(我在这里找到的):
func imageOrientationToTiffOrientation(value: UIImageOrientation) -> Int32
{
switch (value)
{
case .up:
return 1
case .down:
return 3 …Run Code Online (Sandbox Code Playgroud) 我不是在问确切的代码,而是整体的想法。
这是我的问题:我正在尝试创建类似于在照片应用程序中选择 UI 的过滤器。我尝试了多种方法,但它们都有其缺点。
1)我尝试使用Operation和OperationQueue集合视图,该视图启用了预取。这会快速加载 viewController,但在滚动时会掉帧。
2)现在我正在使用滚动视图,GCD但它加载 viewController 的时间太长(因为它一次将所有过滤器应用于其中的所有按钮),但随后它会平滑滚动。
注意: 要回答这个问题,不需要阅读以下部分(我相信),但是如果您对我如何尝试实现功能感兴趣,欢迎您阅读。
对于所有过滤器的实现,我使用了一个名为 struct 的结构Filters,它负责启动每个过滤器并将其附加到一个数组中。
struct Filters {
var image: UIImage
var allFilters: [CIFilter] = []
init(image: UIImage) {
self.image = image
guard let sepia = Sepia(image: image) else {return}
allFilters.append(contentsOf: [sepia, sepia, sepia, sepia, sepia, sepia, sepia, sepia, sepia, sepia, sepia, sepia, sepia])
}
}
Run Code Online (Sandbox Code Playgroud)
现在我只使用一个过滤器。Sepia是 的子类CIFilter。我已经将它创建为一个子类,因为将来我将根据它创建一个自定义的。这是它的实现:
class Sepia: CIFilter {
var inputImage: CIImage?
var inputIntensity: NSNumber?
@objc …Run Code Online (Sandbox Code Playgroud) ios ×6
swift ×6
uiimage ×2
xcode ×2
cgimage ×1
ciimage ×1
cocoa-touch ×1
core-image ×1
mapkit ×1
uiscrollview ×1
xcode9 ×1