UIView 超出边界的处理

原文链接:http://www.cnblogs.com/iosdev/archive/2012/10/16/2725836.html

例如:一个UIButton的一部分添加到一个UIView上,那么你点击的时候只有点击在和它父类交集的地方才起作用,如何解决这个问题呢?

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {

    if (CGRectContainsPoint(self.button.frame, point)) {

        return YES;

    }

    return [super pointInside:point withEvent:event];

}

 很简单的,也就是你点击的点被包含在这个btton的frame里面,return YES就可以了。

转载于:https://www.cnblogs.com/iosdev/archive/2012/10/16/2725836.html

展开阅读全文
博主设置当前文章不允许评论。

滑动图片,不使图片超出图片的边界

12-14

以下是我的代码rn[code=java]package com.staticwallpapercustomview;rnrnimport android.os.Bundle;rnimport android.app.Activity;rnimport android.widget.ImageView;rnrnpublic class CustomViewActivity extends Activity rnrn private float mx ;rn private ImageView imgWallpaper;rn private Bitmap bitmap;rnrn public void onCreate(Bundle savedInstanceState) rn super.onCreate(savedInstanceState);rn this.requestWindowFeature(Window.FEATURE_NO_TITLE);rn setContentView(R.layout.activity_static_wall_paper);rn rn setupView();rnrn rn rn private OnTouchListener touchListener = new OnTouchListener() rn rn public boolean onTouch(View v, MotionEvent event) rn float curX; rn rn switch (event.getAction()) rn case MotionEvent.ACTION_DOWN: rn mx = event.getX();rn break; rn case MotionEvent.ACTION_MOVE:rn curX = event.getX(); rn imgWallpaper.scrollBy((int) (mx - curX), 0); rn mx = curX; rn break;rn case MotionEvent.ACTION_UP: rn //imgWallpaper.beginMove();rn break; rn rn return true;rn rn ;rn rn public void setupView()rn imgWallpaper = (ImageCustomView) this.findViewById(R.id.img_wallpaper); rn bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.a1);rn imgWallpaper.setImageBitmap(bitmap);rn imgWallpaper.setOnTouchListener(touchListener);rn rnrn[/code]rn只要把ImageView的scaleType设为center就可以运行此程序了,但是滑动图片会超边边界,出现白边,还请大神们帮忙为我解决滑动超过图片边界的问题,谢谢了 论坛

帮我看下35600索引超出边界

04-08

帮我看下这里写错了什么,总是35600索引超出边界,数据不能显示完全,排序不连贯,帮我看下,谢谢rnrnrnPrivate Sub Command11_Click()rnDim filenamernIf Winsock1(ListView1.SelectedItem.Index).State <> sckClosed Thenrnfilename = InputBox("请选择本地文件名")rnIf filename = "" ThenrnMsgBox "请输入文件名"rnGoTo exi:rnEnd IfrnDim FreeF As IntegerrnDim LenFile As Long '文件的长度rnDim bytData() As Byte '存放数据的数组rnDim ipos As LongrnConst imax = 65535rnFreeF = FreeFile '获得空闲的文件号rnOpen filename For Binary As #FreeF '打开文件rnDoEventsrnLenFile = LOF(FreeF) '获得文件长度rnIf LenFile <= imax Then '如果要发送的文件小于数据块大小,直接发送rnReDim bytData(1 To LenFile) '根据文件长度重新定义数组大小rnGet #FreeF, , bytData '把文件读入到数组里rnClose #FreeF '关闭文件rnWinsock1(ListView1.SelectedItem.Index).SendData bytData '发送数据rnExit SubrnEnd Ifrn'文件大于数据块大小,进行分块发送rnDo Until (ipos >= (LenFile - imax)) '发送整块数据的循环rnReDim bytData(1 To imax)rnGet #FreeF, ipos + 1, bytDatarnWinsock1(ListView1.SelectedItem.Index).SendData bytDatarnipos = ipos + imax '移动iPos,使它指向下来要读的数据rnLooprn'这里要注意的是,必须检查文件有没有剩下的数据,如果文件大小正好等于数据块大小的rn' 整数倍,那么就没有剩下的数据了rnReDim bytData(1 To LenFile - ipos) '发送剩下的不够一个数据块的数据rnGet #FreeF, ipos + 1, bytDatarnWinsock1(ListView1.SelectedItem.Index).SendData bytDatarnClose #FreeFrnEnd Ifrnexi:rnEnd Sub 论坛

没有更多推荐了,返回首页