trucos quito quitar pantalla mensajes efectos desactivar cómo con como iphone uiview

quito - mensajes con efectos iphone



iPhone, reproduce el efecto lupa. (3)

Hacemos esto en Crucigramas. En tu método drawRect, enmascara un círculo (usando un mapa de bits monocromático que contiene la "máscara" de tu lupa) y dibuja tu vista de sujeto allí con una transformación de escala 2x. Luego dibuja una imagen de lupa sobre eso y listo.

- (void) drawRect: (CGRect) rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGRect bounds = self.bounds; CGImageRef mask = [UIImage imageNamed: @"loupeMask"].CGImage; UIImage *glass = [UIImage imageNamed: @"loupeImage"]; CGContextSaveGState(context); CGContextClipToMask(context, bounds, mask); CGContextFillRect(context, bounds); CGContextScaleCTM(context, 2.0, 2.0); //draw your subject view here CGContextRestoreGState(context); [glass drawInRect: bounds]; }

Me gustaría poder crear una lupa móvil (como la que tiene cuando copia y pega) en una vista personalizada, para ampliar una parte de mi vista.

No tengo idea de cómo empezar, ¿tienes alguna idea?

Gracias de antemano por tu ayuda :)


Hay un ejemplo completo aquí . Hay un pequeño error en el proyecto descargado, pero por lo demás, funciona muy bien y hace exactamente lo que necesita.


Yo uso este código en Swift 3:

class MagnifyingGlassView: UIView { var zoom: CGFloat = 2 { didSet { setNeedsDisplay() } } weak var readView: UIView? // MARK: - UIVIew override init(frame: CGRect) { super.init(frame: frame) setupView() } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) setupView() } override func draw(_ rect: CGRect) { guard let readView = readView else { return } let magnifiedBounds = magnifyBounds(of: readView, zoom: zoom) readView.drawHierarchy(in: magnifiedBounds, afterScreenUpdates: false) } // MARK: - Private private func setupView() { isOpaque = false backgroundColor = UIColor.clear } private func magnifyBounds(of view: UIView, zoom: CGFloat) -> CGRect { let transform = CGAffineTransform(scaleX: zoom, y: zoom) var bounds = view.bounds.applying(transform) bounds.center = view.bounds.center return view.convert(bounds, to: self) } } extension CGRect { var center: CGPoint { get { return CGPoint(x: origin.x + width / 2, y: origin.y + height / 2) } set { origin.x = newValue.x - width / 2 origin.y = newValue.y - height / 2 } } }

setNeedsDisplay llamar a setNeedsDisplay en scrollViewDidScroll: si su vista de lectura es scrollView.