Apple Pencil용 API
12184 단어 iOSApplePenciliPad
소개
Pencil의 실물이 수중에 없기 때문에 API를 바라볼 뿐.
익숙하지 않은 단어:
Azimuth… 방위각
Altitude… 고도
이 그림에 Observer
를 필처, Star
를 Lightning 단자와 맞추면 좋을까.
UITouch
UITouchType
터치의 종류에 Stylus(≒Apple Pencil)가 추가되었다.
UITouchTypetypedef NS_ENUM(NSInteger, UITouchType) {
UITouchTypeDirect, // A direct touch from a finger (on a screen)
UITouchTypeIndirect, // An indirect touch (not a screen)
UITouchTypeStylus NS_AVAILABLE_IOS(9_1), // A touch from a stylus
} NS_ENUM_AVAILABLE_IOS(9_0);
UITouchType
터치의 종류에 Stylus(≒Apple Pencil)가 추가되었다.
UITouchType
typedef NS_ENUM(NSInteger, UITouchType) {
UITouchTypeDirect, // A direct touch from a finger (on a screen)
UITouchTypeIndirect, // An indirect touch (not a screen)
UITouchTypeStylus NS_AVAILABLE_IOS(9_1), // A touch from a stylus
} NS_ENUM_AVAILABLE_IOS(9_0);
UITouchTypeDirect : 손가락 터치
UITouchTypeIndirect : 상세 불명
UITouchTypeStylus : Pencil
UITouchTypeIndirect
에 관한 기술은 특별히 없고, 용도 불명. "스크린 밖의 간접적인 터치"라는 취지의 코멘트가 있으므로, 키보드의 포스 터치인가, 혹은 장래 Siri Remote 와 같은 디바이스에 대응하기 위한 것일지도 모른다.보다 정확도가 높은 터치 좌표 찾기
UITouch
// Use these methods to gain additional precision that may be available from touches.
// Do not use precise locations for hit testing. A touch may hit test inside a view, yet have a precise location that lies just outside.
@available(iOS 9.1, *)
public func preciseLocationInView(view: UIView?) -> CGPoint
@available(iOS 9.1, *)
public func precisePreviousLocationInView(view: UIView?) -> CGPoint
정밀도가 높은 좌표란?
iOS 9.1부터 손가락과 펜슬 모두에서 더 정확하고 정밀한 터치 좌표를 얻을 수 있습니다. 이것은 기존의
-locationInView:
대신에 위의 메소드를 사용하는 것만으로 좋다. 큰 화면을 가지는 단말에는 유효.각 메소드의 대응
일반 터치 좌표
고정밀 터치 좌표
현재 터치 좌표
locationInView()
preciseLocationInView()
직전의 터치 좌표
previousLocationInView()
precisePreviousLocationInView()
방위각(Azimuth) 얻기
방위각을 얻는다. UITouchTypeStylus에서만 사용할 수 있습니다.
UITouch
// Azimuth angle. Valid only for stylus touch types. Zero radians points along the positive X axis.
// Passing a nil for the view parameter will return the azimuth relative to the touch's window.
@available(iOS 9.1, *)
public func azimuthAngleInView(view: UIView?) -> CGFloat
방위각의 방향을 가리키는 단위 벡터를 얻는다. UITouchTypeStylus에서만 사용할 수 있습니다.
UITouch
// A unit vector that points in the direction of the azimuth angle. Valid only for stylus touch types.
// Passing nil for the view parameter will return a unit vector relative to the touch's window.
@available(iOS 9.1, *)
public func azimuthUnitVectorInView(view: UIView?) -> CGVector
참고로 CGVector
CGGeometry
public struct CGVector {
public var dx: CGFloat
public var dy: CGFloat
public init()
public init(dx: CGFloat, dy: CGFloat)
}
고도각(Altitude)을 얻
고도 각을 얻는다. UITouchTypeStylus에서만 사용할 수 있습니다.
M_PI/2
라디안은 Pencil이 화면에 수직임을 나타냅니다. 0 라디안은 Pencil이 화면과 평행하다는 것을 나타냅니다.UITouch
// Altitude angle. Valid only for stylus touch types.
// Zero radians indicates that the stylus is parallel to the screen surface,
// while M_PI/2 radians indicates that it is normal to the screen surface.
@available(iOS 9.1, *)
public var altitudeAngle: CGFloat { get }
비고:라디안/호도법
estimationUpdateIndex
이 속성은 예상 속성을 포함한 각 터치에서 단순히 증가합니다. 적절한 터치에 터치 업데이트를 적용하는지 확인하기 위해이 속성을 사용할 수 있습니다. 객체가 추정되거나 업데이트된 속성 중 하나를 포함하지 않을 때 nil을 반환합니다. (Google 번역)
……라는 것으로, 터치의 인덱스적인 것 같다.
UITouch
// An index which allows you to correlate updates with the original touch.
// Is only guaranteed non-nil if this UITouch expects or is an update.
@available(iOS 9.1, *)
public var estimationUpdateIndex: NSNumber? { get }
UITouchProperties
추정 속성의 비트 마스크.
UITouchProperties
@available(iOS 9.1, *)
public struct UITouchProperties : OptionSetType {
public init(rawValue: Int)
public static var Force: UITouchProperties { get }
public static var Azimuth: UITouchProperties { get }
public static var Altitude: UITouchProperties { get }
public static var Location: UITouchProperties { get } // For predicted Touches
}
각각 Pencil의 필압, 방위, 고도, 좌표를 나타낸다.
estimatedProperties
예상 속성을 얻습니다.
UITouch
// A set of properties that has estimated values
// Only denoting properties that are currently estimated
@available(iOS 9.1, *)
public var estimatedProperties: UITouchProperties { get }
// A set of properties that expect to have incoming updates in the future.
// If no updates are expected for an estimated property the current value is our final estimate.
// This happens e.g. for azimuth/altitude values when entering from the edges
@available(iOS 9.1, *)
public var estimatedPropertiesExpectingUpdates: UITouchProperties { get }
참고 자료
UITouch Class Reference
What's New in iOS 9.1
How to track finger position and touch force in iOS 9
샘플 코드
TouchCanvas: Using UITouch efficiently and effectively
Reference
이 문제에 관하여(Apple Pencil용 API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/usagimaru/items/69b3acfa251f7d191334
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Apple Pencil용 API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/usagimaru/items/69b3acfa251f7d191334텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)